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 }]
// }