不工作
问题描述:
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;
});
我做了一些改变,但我还是不明白....
答
您的符号似乎很奇怪。方括号用于数组,但内容是对象属性/值表示法。我不认为这会起作用。通过将[]
替换为{}
,可以将表达式转换为对象,但随后对象不具有长度。你可以得到键的数量与一物件:
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等这样的对象。
答
这不是Array
,Array
是一个简单的值列表,因为这是键到值的映射,即Object
。你的意思是做类似的事情:
var myObject = { first_name: false, last_name: false, email: false, month: false, day: false, year: false, password: false, password2: false }
这是一个对象的结构,而不是一个数组。 – j08691
JS中没有关联数组。您应该使用对象(地图)。 –
使用'var errors = {};'初始化您的关联数组(aj.a.“纯语言对象”,用JavaScript的方式)。 –