数组包对象 对象里的某个字段相同 另一个字段值相加 对象删除
时间: 2024-03-10 11:19:58 浏览: 15
可以按照以下步骤实现:
1. 遍历数组,以某个字段为 key,将相同 key 的对象放入一个新的 Map 中,并将对应字段值相加。
2. 将 Map 中的对象转换为数组。
3. 遍历新数组,删除不需要的字段。
下面是一个 JavaScript 的示例代码:
```JavaScript
const arr = [
{ id: 1, name: 'Alice', amount: 10 },
{ id: 2, name: 'Bob', amount: 20 },
{ id: 1, name: 'Alice', amount: 30 },
{ id: 3, name: 'Charlie', amount: 40 }
];
// 以 id 为 key,将相同 id 的对象的 amount 相加
const map = new Map();
arr.forEach(item => {
const { id, name, amount } = item;
if (map.has(id)) {
const orig = map.get(id);
map.set(id, { id, name, amount: orig.amount + amount });
} else {
map.set(id, { id, name, amount });
}
});
// 转换为数组
const result = Array.from(map.values());
// 删除 name 字段
result.forEach(item => delete item.name);
console.log(result);
// 输出:
// [ { id: 1, amount: 40 }, { id: 2, amount: 20 }, { id: 3, amount: 40 } ]
```
在上面的示例中,我们以 `id` 作为 key,将相同 `id` 的对象的 `amount` 值相加。最终得到的数组中,每个对象只有 `id` 和 `amount` 两个字段,并删除了 `name` 字段。