在javascript上循环遍历数组的最快方法是什么?

时间:2009-01-07 19:46:32

标签: javascript performance

6 个答案:

答案 0 :(得分:15)

答案 1 :(得分:3)

一个好的老式for循环出了什么问题?

for( var i = 0; i < list.length; i++ ) {
    // do something with list[i]
}

for...infor...each...in的语义往往会让人感到困惑并导致意外结果。

答案 2 :(得分:0)

CMS的链接应该向您展示他们都很快的小数据集,我唯一建议的是你避免使用for (a in b),因为它比任何其他循环结构具有更高的内存开销,并且可能由于其“有趣”的语义,它会慢得多。

Anyhoo,除了for(in)任何真正的JS应该花费相当多的时间来实际工作而不是处理循环本身,所以循环成本的微小变化不应该太多重要的。

答案 3 :(得分:0)

最近在Greg Reimer's Weblog中介绍了这一点。

答案很简单:

for (var i=0, node; node = hColl[i++];) {
    // do something with node
}

答案 4 :(得分:0)

正如其他地方所解答的那样(为什么这个线程存在?):反过来:

var i = foo.length; while (i--) { /* do something with foo[i] */ }
如果你可以处理以下警告,那么

..是最快的循环:

  • 逆序并不总是合适

  • 有点难以阅读

  • 它为

  • 中的任何范围的足迹添加了一个变量
  • 它仅比较小的脚印和更易读的缓存长度for循环

  • 略快

答案 5 :(得分:0)

据说对象更快......例如:

var array = {"0": "foo", "1": "bar"}
for(var i in array){
    var val = array[i];
    // do something
}