我有一个js关联数组(或一些可能更喜欢它调用作为一个对象)等,说
var quesArr=new Array();
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";
是否有任何内置的功能,可以让这个数组的长度,或在jQuery的或其他库的解决方案? 目前quesArr.length会给0,因为大多数的你一定要知道。
请不要在提到建议在整个阵列/对象迭代这个问题 ,因为数组/对象,我有非常大的。
有什么办法,我可以用这个进行?
没有,没有内置的属性,它告诉你的对象有多少属性有(这是你在找什么)。
我能想到的最接近的是ES5和较高的特点, Object.keys
( 规格 | MDN ),它可以使用这样的:
console.log(Object.keys(quesArr).length); // "3"
Object.keys
返回一个对象自身的枚举的属性的名称数组。 但在内部,当然它是循环你不想使用(和填充工具为它预ES5环境中使用一个循环,当然)。
还有另一个ES5 +功能, Object.getOwnPropertyNames
( 规格 | MDN ),无论它们是否是枚举,它返回对象的“自己”的属性名称的数组。
无论是在什么隐约现代的支持 。 IE9 +,并且至少自2011浏览器,Firefox和Safari的版本。
FWIW,除非你打算使用Array
对象的特点,不让它数组。 代替:
var quesArr={};
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";
这些键没有给予在方括号,字符串或者,如果你不希望他们(使用是否使用数组或一个普通的对象):
var quesArr={};
quesArr.q101="Your name?";
quesArr.q102="Your age?";
quesArr.q103="Your school?";
但是,如果你愿意,你可以用其他的符号; 他们除了用虚线标记的键必须是有效的标识符完全等同(方括号中的符号,他们可以是任何东西)。
你甚至可以这样做:
var quesArr={
q101: "Your name?",
q102: "Your age?",
q103: "Your school?"
};
或者(如果该键也不会是有效的标识符):
var quesArr={
"q101": "Your name?",
"q102": "Your age?",
"q103": "Your school?"
};
假设你有以下,
var myObject = {}; // denotes an Object is being created
myObject.city = "Chennai";
myObject.state = "Tamilnadu";
myObject.country = "Indian Peninsula";
console.log(myObject.length); // results in undefined
但是,有计算在现代浏览器长度的方法。(铬,FF4 +,IE9)
Object.keys(myObject);
// --> ["city", "state", "country"]
Object.keys(myObject).length
// --> 3
你也可以通过跟踪数组的长度与所谓长度的关联元素处理的关联数组长度事项的问题。
又名 :
myArray["length"]=0;
当添加或删除元素简单地添加或减去myArrary["length"]
的元素。
然后,你可以做的事情,例如:
theLength=myArray.length;