方案 1:设置条件(flag)
const arr = [0, 1, 2, 3, 4]
const sum = arr.reduce((prev, curr, index, currArr) => {
if (index >= 4) {
return prev
} else {
prev += curr
return prev
}
}, 0)
console.log(sum) // 6
方案 2:循环过程中修改原始数组
const arr = [0, 1, 2, 3, 4]
const sum = arr.reduce((prev, curr, index, currArr) => {
prev += curr
if (curr === 3) currArr.length = 0
return prev
}, 0)
console.log(sum) // 6
更好的做法
跳出 reduce 其实是一个伪需求,更好的做法是在这种场景使用 some 这样自带跳出循环的方法。
const arr = [0, 1, 2, 3, 4]
let sum = 0
arr.some((curr, index, currArr) => {
sum += curr
return curr === 3
})
console.log(sum)