在过去和大多数我目前的项目中,我倾向于使用这样的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中的元素或任何数组的最佳实践?
我知道你不想听到这个,但是:我认为在这种情况下最好的做法是最可读的。只要循环不计数从这里到月球,性能增益就不够了。
我更喜欢for循环,因为它更具可读性。从长度到0的循环比从0到长度的循环更有效。如你所说,使用反向while循环比foor循环更有效。我没有比较结果页面的链接,但我记得不同浏览器的差异各不相同。对于某些浏览器,反向while循环速度是其两倍。但是,如果你循环“小”数组,它没有任何区别。在您的示例中,元素的长度将是“小”
我认为你有两种选择。对于诸如jQuery和类似框架之类的dom元素,为您提供了一种很好的迭代方法。第二种方法是for循环。
我知道这个问题很老 - 但这是另一个非常简单的解决方案......
var elements = Array.from(document.querySelectorAll("div"));
然后它可以像任何标准数组一样使用。
如果元素集是根节点的子节点,我喜欢使用TreeWalker。