JavaScript关联数组的长度
我有一个js关联数组(或者有些人可能更喜欢将其称为对象),例如
var quesArr=new Array();
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";
是否有任何内置函数可以获取此数组的长度,或者jQuery或其他库中的任何解决方案? 目前,大多数人都必须知道,quesArr.length的值为0。
请不要建议像这个问题中提到的那样遍历整个数组/对象,因为我拥有的数组/对象非常大。
有什么办法可以继续进行吗?
不,没有内置属性可以告诉您对象具有多少个属性(这就是您要寻找的)。
我能想到的最接近的是ES5和更高版本的功能Array
(规格| MDN),您可以这样使用:
console.log(Object.keys(quesArr).length); // "3"
Array
返回对象自己的可枚举属性名称的数组。 但是在内部当然是您不想使用的循环(当然,对于ES5之前的环境,它的polyfill使用一个循环)。
ES5 +还有另一个功能,即Array
(规格| MDN),该功能将返回对象的“自有”属性名称的数组,而不管它们是否可枚举。
两者都在模糊的现代事物中得到支持。 IE9 +,以及至少从2011年开始的Chrome,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
但是,有一种方法可以计算出现代浏览器的长度。(Chrome,FF4 +,IE9)
Object.keys(myObject);
// --> ["city", "state", "country"]
Object.keys(myObject).length
// --> 3
人们还可以通过使用称为length的关联元素跟踪数组的长度来处理关联数组长度问题。
又名:
myArray["length"]=0;
添加或删除元素时,只需从myArrary["length"]
元素中添加或减去。
然后,您可以执行以下操作:
theLength=myArray.length;
关联数组没有length属性可以获取长度