Javascript数组长度不起作用

时间:2012-11-11 16:06:01

标签: javascript jquery

所以我有这个数组:

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

我做了一些改变,但我仍然没有得到它......

3 个答案:

答案 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)

这不是ArrayArray是一个简单的值列表,其中这是键到值的映射,即Object。你的意思是做一些事情:

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