reduce 基本使用场景

const arr1 = [1, 2, 3, 4, 5]
const arr2 = [
    { name: '张三', age: 20, id: 1},
    { name: '李四', age: 20, id: 2},
    { name: '王五', age: 18, id: 3},
    { name: '赵六', age: 19, id: 4},
    { name: '钱七', age: 18, id: 5},
    { name: '孙八', age: 19, id: 6},
    { name: '李九', age: 20, id: 7}
]
// 场景一:number数组求和
const result1 = arr1.reduce((prev, curr) => prev + curr)

// 场景二:对象属性求和
const result2 = arr2.reduce((prev, curr) => prev + curr.age, 0)

// 场景三:对象根据age进行分组
const result3 = arr2.reduce((prev, curr) => {
    const index = prev.findIndex(v => v.age === curr.age)
    if (index >= 0) {
        prev[index].list.push(curr)
    } else {
        prev.push({
            age: curr.age,
            list: [curr]
        })
    }
    return prev
}, [])

// 场景四:数组转对象
const result4 = arr2.reduce((prev, curr) => {
    prev[curr.id] = curr
    return prev
}, {})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值