- 此问题在此处已有答案**:
Why is using "for...in" for array iteration a bad idea?(28个答案)
昨天关门了。
我已经在JavaScript中找到了两种计算相同事物的方法,我只是想知道哪种方法在内存使用和处理能力方面更有效:
AveragePL = netArray.reduce((sum,arr) => sum + arr, 0);
或
for (let index in netArray) {
AveragePL = AveragePL + netArray[index];
}
我意识到我可以做AveragePL += netArray [index],但是我是JS的新手,所以我使用完整的形式,这样我就可以知道发生了什么。
4条答案
按热度按时间57hvy0tb1#
reduce比迭代更有效u可以看这里Why you should use reduce instead of loops
g52tjvyc2#
这实际上取决于JS引擎的实现。
此外,还有不同类型的for循环
for..in
、for..of
和经典的for
经典的for是最优化的,所以在大多数实现中,它会击败所有其他的实现,包括
reduce
方法,它必须为每个迭代执行一个函数。在firefox中你可以看到下面的扩展基准测试。
参见https://jsben.ch/xU8Nd
5lwkijsr3#
使用我可以使用的
node
版本,似乎reduce
要快一些,时间以毫秒为单位。hsgswve44#
.reduce()
比循环快得多,如果可以的话,reduce总是比循环更好。下面是一个1,000个元素的数组的测试,重复10,000次:输出:
时间单位为毫秒。