js数组去重 多个字段累加
时间: 2023-05-16 19:04:45 浏览: 116
可以使用reduce和Map来实现多个字段的累加和去重。具体实现代码如下:
```javascript
const arr = [
{ id: 1, name: 'Tom', age: 18 },
{ id: 2, name: 'Jerry', age: 20 },
{ id: 1, name: 'Tom', age: 22 },
{ id: 3, name: 'Lucy', age: 18 },
{ id: 2, name: 'Jerry', age: 25 },
];
const map = new Map();
const result = arr.reduce((acc, cur) => {
const key = cur.id + cur.name;
if (map.has(key)) {
const item = map.get(key);
item.age += cur.age;
} else {
map.set(key, cur);
acc.push(cur);
}
return acc;
}, []);
console.log(result);
// Output: [
// { id: 1, name: 'Tom', age: 40 },
// { id: 2, name: 'Jerry', age: 45 },
// { id: 3, name: 'Lucy', age: 18 }
// ]
```
这段代码可以实现对数组中的对象按照id和name字段进行去重,并将相同id和name的对象的age字段进行累加。
阅读全文