0

だから私はこの配列を持っています:

[first_name: false, last_name: false, email: false, month: false, day: false, year: false, password: false, password2: false]

これを行うと、console.log(arrayName.length)0が返されます。なぜ?私が間違っているのは何ですか?

// LE

これが私のやり方です:

var errors = {};
 $('.register-front').delegate('button','click',function(){
  var $this = $(this).parent().parent().parent();
  $this.find('input,select').each(function(){
    if(!$(this).val() || ($(this).val() == '-1'))
    {
      errors[$(this).attr('name')] = false;
    }
  });
  console.log(errors.length);
  return false;
 });

いくつか変更を加えましたが、まだわかりません。

4

3 に答える 3

8

あなたの表記は奇妙に思えます。角かっこは配列用ですが、内容はオブジェクトの属性/値の表記です。私はそれがうまくいくとは思わない。[]をに置き換えることで式をオブジェクトに変えることができます{}が、その場合、オブジェクトには長さがありません。オブジェクト内のキーの数は、次の方法で取得できます。

Object.keys(obj).length

または、次のコマンドを使用してオブジェクトキーを反復処理することもできます。

for (var key in obj) {
    . . .
}

編集追加した特定のコードについて、次の行を置き換えることができます。

console.log(errors.length);

と:

console.log(Object.keys(errors).length);
于 2012-11-11T16:09:31.223 に答える
0

これは、ではなく、ArrayArrayの単純なリストです。これは、キーから値へのマッピング、つまりObject。です。あなたは次のようなことをするつもりです:

var myObject = { first_name: false, last_name: false, email: false, month: false, day: false, year: false, password: false, password2: false }
于 2012-11-11T16:12:20.870 に答える
0

JavaScriptでは、assotiative-arrayのような構造はObjectです。

{
    lorem: 'ipsum',
    dolor: 'amet'
}

あなたの例では、角かっこを中かっこに置き換えると、そのようなオブジェクトが得られます。

于 2012-11-11T16:09:00.443 に答える