JavaScript关联数组的长度

我有一个js关联数组(或者有些人可能更喜欢将其称为对象),例如

var quesArr=new Array();
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";

是否有任何内置函数可以获取此数组的长度,或者jQuery或其他库中的任何解决方案? 目前,大多数人都必须知道,quesArr.length的值为0。

请不要建议像这个问题中提到的那样遍历整个数组/对象,因为我拥有的数组/对象非常大。

有什么办法可以继续进行吗?

gopi1410 asked 2019-10-27T23:35:10Z
4个解决方案
113 votes

不,没有内置属性可以告诉您对象具有多少个属性(这就是您要寻找的)。

我能想到的最接近的是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?"
};
T.J. Crowder answered 2019-10-27T23:36:24Z
8 votes

假设您具有以下条件,

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
kmario23 answered 2019-10-27T23:36:54Z
1 votes

人们还可以通过使用称为length的关联元素跟踪数组的长度来处理关联数组长度问题。

又名:

myArray["length"]=0;

添加或删除元素时,只需从myArrary["length"]元素中添加或减去。

然后,您可以执行以下操作:

theLength=myArray.length;
user2256383 answered 2019-10-27T23:37:37Z
0 votes

关联数组没有length属性可以获取长度

viveksharma answered 2019-10-27T23:38:01Z
translate from https://stackoverflow.com:/questions/10563251/length-of-a-javascript-associative-array