请考虑以下代码:
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个值。 有没有办法更快?即使使用另一个系统,通过数字索引对象,然后快速循环它们?
答案 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循环遍历列表。