function sum(arr) {
return eval(arr.join(‘+‘))
}
function sum(arr) {
let res = 0
for (let i = 0, len = arr.length; i < len; i++) {
res += arr[i]
}
return res
}
function sum(arr) {
let res = 0
arr.forEach(i => res += i)
return res
}
function sum(arr) {
const len = arr.length
switch (len) {
case 0:
return 0
case 1:
return arr[0]
break
default:
return arr[0] + sum(arr.slice(1));
}
}
function sum(arr) {
return arr.reduce((curSum, curItem) => curSum + curItem)
}
执行效率
const oriArr = Array.from(new Array(100000).keys())
console.time(‘数组求和方法耗时测试‘)
sum(oriArr)
console.timeEnd(‘数组求和方法耗时测试‘)
统计 | ms / 1k | ms / 10k | ms / 100k |
---|---|---|---|
eval 函数 | / | / | 30.312744140625 |
for 循环 | / | / | 0.14599609375 |
forEach 循环 | / | / | 2.650146484375 |
递归 | 1 | / | 卡死 |
reduce | / | / | 2.1220703125 |
以上统计结果图一乐,实际运行耗时和电脑配置相关,不过也大致能得出一个结论,for 循环执行效率最高,递归最差,而且会产生大量堆栈导致报错甚至卡死
原文:https://www.cnblogs.com/xzdm/p/13124983.html