javascript – 如何获得数组的真实数量?

前端之家收集整理的这篇文章主要介绍了javascript – 如何获得数组的真实数量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试过这种方式,但它给我错误的计数:
myArr = [];
myArr[666] = 'hello there';
console.log(myArr.length); // returns me 667

它应该是1.我怎样才能以最快的方式获得好的数量呢?

解决方法

It should be 1.

不,它应该是667,因为这是JavaScript中标准数组的长度定义,aren’t really arrays at all.JavaScript中的数组本质上是稀疏的,这意味着它们可以有空洞(索引中没有存储任何类型的值).

How can I have the good count in the fastest way?

唯一的方法是循环.例如:

var count = 0;
myArr.forEach(function() {
    ++count;
});
console.log(count);

…或通过reduce在maček’s answer.forEach,reduce和其他此类访问条目实际存在,因此他们跳过稀疏数组中的漏洞.

我应该提一下,因为IE8仍然(叹气)有相当大的市场份额,你需要shim forEach并减少等等,如果你想使用它们. (这很容易.)

要做到这一点没有任何垫片,只计算实际索引属性(而不是其他类型的属性),然后松散:

var count = 0,name;
for (name in myArr) {
    if (myArr.hasOwnProperty(name) && /^[0-9]+$/.test(name)) {
        ++count;
    }
}

它使用稍微宽松的索引属性名称定义;如果你想要一个健壮的,请参阅this answer的“正确使用”部分.

猜你在找的JavaScript相关文章