reduce较常用的三种方法

1.reduce实现合并相同种类,数相加

let arr=dataArr.reduce((acc,cur)=>{ let found = acc.find((item)=>item.MC==cur.MC){ if(found){ found.NUMS+=cur.NUMS }else{ acc.push(cur) } return acc; } },[])

let arr=dataArr.reduce((acc,cur)=>{
    let found = acc.find((item)=>item.MC==cur.MC){
        if(found){
            found.NUMS+=cur.NUMS        
        }else{
            acc.push(cur)        
        }
        return acc;
    }
},[])

2.reduce计算数组中每个元素出现的次数

const arr = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']; const count=arr.reduce((acc,cur)=>{ acc[cur]=(acc[cur]||0)+1 },{}) console.log(count); // Output: { apple: 3, banana: 2, orange: 1 }

const arr = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple'];
const count=arr.reduce((acc,cur)=>{
    acc[cur]=(acc[cur]||0)+1
},{})
console.log(count); // Output: { apple: 3, banana: 2, orange: 1 }

3.reduce实现按条件分组

const people = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 35 }, { name: 'David', age: 25 }, { name: 'Emily', age: 30 } ]; const arr=people.reduce((acc,cur)=>{ const key=cur.age if(!acc[key]){ acc[key]=[] } acc[key].push(cur) return acc },{}) // Output: { // 25: [{ name: 'Alice', age: 25 }, { name: 'David', age: 25 }], // 30: [{ name: 'Bob', age: 30 }, { name: 'Emily', age: 30 }], // 35: [{ name: 'Charlie', age: 35 }] // }

const people = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Charlie', age: 35 },
  { name: 'David', age: 25 },
  { name: 'Emily', age: 30 }
];
const arr=people.reduce((acc,cur)=>{
    const key=cur.age
    if(!acc[key]){
        acc[key]=[]    
    }
    acc[key].push(cur)
    return acc
},{})
// Output: {
//   25: [{ name: 'Alice', age: 25 }, { name: 'David', age: 25 }],
//   30: [{ name: 'Bob', age: 30 }, { name: 'Emily', age: 30 }],
//   35: [{ name: 'Charlie', age: 35 }]
// }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女码农୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值