非数字索引数组的长度

length of non numeric indexed array?

本文关键字:数组 数字 索引      更新时间:2023-09-26

是否可以在不迭代具有非数字索引的完整数组的情况下获得数组的长度?

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

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

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

数组用于数字索引。

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

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

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

var obj = {};
obj['first'] = 1;
obj['second'] = 2;
var n = Object.keys(obj).length; // 2

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

  • MDN处的Object.keys

好吧,问题是你不是在向数组添加值,而是在向对象添加属性。就获取对象的本地属性数量而言,您可以使用object.keys(arr).length