javascript - 非数字索引数组的长度?

标签 javascript

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

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

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

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 的浏览器,您需要一个兼容性补丁...

关于javascript - 非数字索引数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672905/

相关文章:

javascript - html select 无法显示正确的值

javascript - 如何在 mousedown 事件上更改鼠标光标

javascript - 新的 Google Analytics 事件跟踪不适用于 mailto

javascript - NPM 无法转换 SASS

javascript - jQuery 事件不绑定(bind)

javascript - JS : Text to Image

javascript - 直接连接notepad++和浏览器textarea

javascript - 对象构造 : is the prototype really necessary?

javascript - 链接到 iframe 外部

javascript - 有没有一种方法可以判断它是 native react 还是网络 react ?