在jquery中查找数组的长度得到错误的结果

Shi*_*jin 2 javascript arrays

我有类似下面的javascript代码来获取数组的大小,

var testvar = [  ];
testvar[1] = 2;
testvar[200] = 3;
alert(testvar.length);    //201
Run Code Online (Sandbox Code Playgroud)

小提琴演示

但代码警告201提到了大小2,为什么?

我需要得到该数组中的总元素数.

Enj*_*ted 10

如果你想真正找到数组的长度,尽管做了这样的事情:

alert(Object.keys(testvar).length);
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/4Lqsf45a/

注意Object.keys()在IE <9中不可用.请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys了解变通方法


dev*_*qon 8

因为您在索引200处设置了值testvar[200] = 3.该length属性将是数组的最后一个索引+ 1.

要获取元素的总数,可以使用以下示例:

function countElements(arr) {
    var numElements = 0;
    for ( var indx in arr ) {
        numElements ++;
    }
    return numElements;
}
Run Code Online (Sandbox Code Playgroud)

  • 多么糟糕的**方式来解决这个问题.尝试`testvar [1000000000] = 5;`并在使用您的功能时观察您的浏览器冻结.`Object.keys(testvar).length;`是要走的路. (4认同)