Javascript node.js Array.length问题

Javascript node.js Array.length问题,javascript,node.js,sails.js,Javascript,Node.js,Sails.js,array.length始终返回0。。。。 它返回0,甚至是添加到数组中的某个项目 function validate () { error = new Array(); if(req.body.category_id==""){ error['category_id'] = "Please select category"; } if(req.body.text==""){ error['text'] = "Enter the word"; }

array.length始终返回0。。。。 它返回0,甚至是添加到数组中的某个项目

 function validate () { 

  error = new Array();

  if(req.body.category_id==""){ 
    error['category_id'] = "Please select category";
  }

  if(req.body.text==""){ 
    error['text'] = "Enter the word";
  }

  if(!(req.body.email!="" && req.body.email.test(/@/))){ 
    error['email'] = "Invalid email id";
  }

  if((req.session.number1+req.session.number2)!=req.body.captcha){ 
    error['captcha'] = "Captcha verification failed";
  }  

 console.log(error.length);
 console.log(error['category_id']);

  if(error.length){ 
    return false;   
  }else{ 
    return true;
  }
}

result of the console.log
//0
//Please select category

Javascript没有关联数组,请将其设置为如下对象:

//function to get size of object
Object.prototype.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};
var error = {}; //object
if(req.body.category_id==""){ 
    error['category_id'] = "Please select category";
}
...
//rest of your code
if( Object.size(error) ){ //check if we have error
    return false;   
}else{ 
    return true;
}

//check the size of object
console.log(  Object.size(error) );
console.log(error['category_id']);
使用


但是使用此函数创建的对象在其原型链中将具有此属性(由于
错误的
原型属性
指向定义了
测试
属性的对象。

数组。长度
仅统计键为数字的值。您使用字符串作为键,因此长度始终为0。虽然合法,(因为数组是对象)这很混乱,不适合数组


正如@Sudhir所建议的,使用一个“object”或“hash”:即{}符号。更清晰。(虽然我不同意他用object.prototype修改)

这不是解决方案,但你可以尝试
console.log(error.length);
内部的first IF条件。我们可以在查看其结果后获得更多细节。在我看来,你正在使用“数组”作为一个映射/对象。@Pranav它的going-else部分只是…
返回object.keys(obj).length
?永远不要修改你不拥有的对象。对于数组或对象这样的内置对象,这会加倍。我们没有从prototype.js学到任何东西吗?-1 object.keys(错误).length将更优越:它使用内置函数做同样的事情,并且不修改Object.prototype。
var error = function(){};
error.prototype.test=[1,2,3];  //1,2,3 only example
console.log(new error().test.length);