如何跳出 reduce 循环

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注