在JavaScript中循环使用一组元素的最佳方法是什么?

问题描述 投票:50回答:14

在过去和大多数我目前的项目中,我倾向于使用这样的for循环:

var elements = document.getElementsByTagName('div');
for (var i=0; i<elements.length; i++) {
    doSomething(elements[i]);
}

我听说使用“反向”循环更快但我没有真正的方法来证实这一点:

var elements = document.getElementsByTagName('div'), 
    length = elements.length;

while(length--) {
    doSomething(elements[length]);
}

什么被认为是循环JavaScript中的元素或任何数组的最佳实践?

javascript arrays loops elements
14个回答
1
投票

我知道你不想听到这个,但是:我认为在这种情况下最好的做法是最可读的。只要循环不计数从这里到月球,性能增益就不够了。


0
投票

我更喜欢for循环,因为它更具可读性。从长度到0的循环比从0到长度的循环更有效。如你所说,使用反向while循环比foor循环更有效。我没有比较结果页面的链接,但我记得不同浏览器的差异各不相同。对于某些浏览器,反向while循环速度是其两倍。但是,如果你循环“小”数组,它没有任何区别。在您的示例中,元素的长度将是“小”


0
投票

我认为你有两种选择。对于诸如jQuery和类似框架之类的dom元素,为您提供了一种很好的迭代方法。第二种方法是for循环。


0
投票

我知道这个问题很老 - 但这是另一个非常简单的解决方案......

var elements = Array.from(document.querySelectorAll("div"));

然后它可以像任何标准数组一样使用。


-1
投票

如果元素集是根节点的子节点,我喜欢使用TreeWalker

© www.soinside.com 2019 - 2024. All rights reserved.