如何更好地迭代包含大量未定义项的大型数组

时间:2010-04-25 19:54:10

标签: javascript loops

请考虑以下代码:

var _test1 = [];
_test1[88] = 'sex';
_test1[1999990] = 'hey';
for(i = 0, length = _test1.length; i < length; i++){
    if(_test1[i] == 'hey'){
        alert(_test1.length);
    }
}

这需要花费很多时间,而且只有2个值。 有没有办法更快?即使使用另一个系统,通过数字索引对象,然后快速循环它们?

2 个答案:

答案 0 :(得分:3)

您可以使用for / in循环:

for (var i in _test1) {
    if (!_test1.hasOwnProperty(i) || isNaN(+i)) continue;

    if(_test1[i] == 'hey'){
        alert(_test1.length);
    }
}

这正是您所寻找的;它只会遍历实际定义的索引,并会跳过数组中的任何漏洞。

答案 1 :(得分:1)

您是否尝试过使用Object?数字应自动转换为字符串。您将使用for ... in循环遍历列表。