非数字索引数组的长度?

时间:2012-03-12 18:42:40

标签: javascript

是否有可能获得数组的长度而不迭代具有非数字索引的完整数组?

对于非数字索引数组,Length属性始终为0。

我们可以使用数组的另一个属性或它的原型来获取元素的数量吗?

var arr = [];
arr['first'] = 1;
arr['second'] = 2;
console.log(arr.length); //0

2 个答案:

答案 0 :(得分:6)

数组用于数字索引。

您可以添加其他属性,但它们对长度没有影响,Array.prototype的方法会忽略它们。

如果您使用的是非数字属性,则应该使用{} (对象),并且您需要维护自己的.length。< / p>

或者,您可以使用Object.keys方法查找有多少属性...

var obj = {};
obj['first'] = 1;
obj['second'] = 2;

var n = Object.keys(obj).length; // 2

对于不支持ECMAScript 5的浏览器,您需要兼容性补丁......

答案 1 :(得分:0)

好的,问题是您没有向数组添加值,而是要向对象添加属性。获取对象的本机属性数量时,可以使用Object.keys(arr)。length