不工作

问题描述:

Javascript数组长度所以我有此数组:不工作

[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; 
}); 

我做了一些改变,但我还是不明白....

+2

这是一个对象的结构,而不是一个数组。 – j08691

+0

JS中没有关联数组。您应该使用对象(地图)。 –

+0

使用'var errors = {};'初始化您的关联数组(aj.a.“纯语言对象”,用JavaScript的方式)。 –

您的符号似乎很奇怪。方括号用于数组,但内容是对象属性/值表示法。我不认为这会起作用。通过将[]替换为{},可以将表达式转换为对象,但随后对象不具有长度。你可以得到键的数量与一物件:

Object.keys(obj).length 

或者,您可以通过与对象键循环:

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

编辑为你添加了特定的代码,你可以取代这条线:

console.log(errors.length); 

有:

console.log(Object.keys(errors).length); 

在JavaScript中,assotiative-阵列状结构是对象:

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

在你的例子中,用大括号替换方括号,你会g等这样的对象。

这不是ArrayArray是一个简单的值列表,因为这是键到值的映射,即Object。你的意思是做类似的事情:

var myObject = { first_name: false, last_name: false, email: false, month: false, day: false, year: false, password: false, password2: false }