数组包对象 对象里的某个字段相同 另一个字段值相加 对象删除
时间: 2024-03-10 19:23:04 浏览: 20
可以先遍历数组,使用一个字典(或者Map)来记录相同字段的对象,并把对象的另一个字段值相加。然后再遍历字典(或者Map),把相加后的值更新回原数组中对应对象的字段,并把不需要的对象删除。以下是一个可能的实现(假设对象数组中每个对象都有两个字段:name和count):
```javascript
const arr = [
{ name: 'apple', count: 2 },
{ name: 'banana', count: 3 },
{ name: 'apple', count: 1 },
{ name: 'orange', count: 4 },
{ name: 'banana', count: 2 }
];
const map = new Map();
// 遍历数组,记录相同 name 的对象并相加 count
arr.forEach(obj => {
if (map.has(obj.name)) {
map.set(obj.name, map.get(obj.name) + obj.count);
} else {
map.set(obj.name, obj.count);
}
});
// 遍历字典,更新原数组中对应对象的 count,并删除不需要的对象
for (let i = 0; i < arr.length; i++) {
const obj = arr[i];
const sum = map.get(obj.name);
if (sum) {
obj.count = sum;
map.delete(obj.name);
} else {
arr.splice(i, 1);
i--;
}
}
```
在此例中,最终数组中只有三个对象:{ name: 'apple', count: 3 },{ name: 'banana', count: 5 },{ name: 'orange', count: 4 }。