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.ageif(!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 }]
// }