所以我有这个数组:
[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;
});
我做了一些改变,但我仍然没有得到它......
答案 0 :(得分:9)
你的记谱似乎很奇怪。方括号用于数组,但内容是对象属性/值表示法。我认为这不会起作用。您可以将[]
替换为{}
,将表达式转换为对象,但是,对象没有长度。您可以使用以下命令获取对象中的键数:
Object.keys(obj).length
或者,您可以使用:
遍历对象键for (var key in obj) {
. . .
}
编辑对于您添加的特定代码,您可以替换此行:
console.log(errors.length);
使用:
console.log(Object.keys(errors).length);
答案 1 :(得分:0)
在JavaScript中,类似关联数组的结构是Object:
{
lorem: 'ipsum',
dolor: 'amet'
}
在您的示例中,将大括号替换为大括号,您将获得此类对象。
答案 2 :(得分:0)
这不是Array
,Array
是一个简单的值列表,其中这是键到值的映射,即Object
。你的意思是做一些事情:
var myObject = { first_name: false, last_name: false, email: false, month: false, day: false, year: false, password: false, password2: false }