方案 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)