对于遍历类似数组的对象,使用Array.from( ).forEach()
还是for
循环更好?
类似数组的对象示例:
let childeNodes = document.querySelector('#someid').childNodes;
字符串
使用Array.from().forEach()
迭代:
Array.from(childNodes).forEach(node => {
// do something with node
})
型
或者使用for
进行迭代:
for (let i = 0; i < childNodes.length; i++) {
// do something with childNodes[i]
}
型
3条答案
按热度按时间0qx6xfy61#
请注意,还有两个更有趣的变体:
Array.from
函数接受第二个参数,该参数是为每个元素调用的回调函数。我们可以预期它比附加到它的.forEach
方法更快,因为不需要创建中间数组for..of
循环但众所周知的事实是,老式的
for
循环击败了所有替代方案。这里是一个小片段,使测量:个字符
50pmv0ei2#
你的问题用词不对。
而不是:
Array.from
vsfor(..)
应该是:Array.forEach
与for(...)
对于这个问题,你可以在SO或简单的谷歌搜索中找到非常好的答案。
tl;dr;
for
循环更快。forEach
较慢,但更适合函数式编程范例。nnt7mjpx3#
根据这个jsperf,
for
循环比forEach
快,但for...in
最慢。正如前面提到的,
Array.from
是不相关的,因为它只被调用一次。另外值得一提的是,在您的示例的真实的用例中,最慢的操作可能是
document.querySelector
。根据这个jsperf使用getElementById
要快得多。这里更大的收获是在担心性能之前理解用例和可维护性;当你担心性能的时候,更全面地考虑它。