Javascript node.js Array.length问题
array.length始终返回0。。。。 它返回0,甚至是添加到数组中的某个项目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"; }
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);