将一个数组中相同id的对象的提取出来放在一个数组当中
时间: 2024-02-01 11:16:00 浏览: 157
将数组中相同元素分类放入不同数组中
4星 · 用户满意度95%
假设你有一个包含对象的数组,每个对象都有一个id属性,你想要将具有相同id的对象提取出来,可以使用JavaScript中的reduce()方法和对象字面量来实现:
```javascript
const arr = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 1, name: "Charlie" },
{ id: 3, name: "David" },
{ id: 2, name: "Eve" },
];
const result = arr.reduce((acc, obj) => {
if (!acc[obj.id]) {
acc[obj.id] = [];
}
acc[obj.id].push(obj);
return acc;
}, {});
console.log(result);
```
运行结果:
```
{
"1": [
{ "id": 1, "name": "Alice" },
{ "id": 1, "name": "Charlie" }
],
"2": [
{ "id": 2, "name": "Bob" },
{ "id": 2, "name": "Eve" }
],
"3": [
{ "id": 3, "name": "David" }
]
}
```
代码解释:
- `reduce()`方法用于将数组中的每个元素累加到一个累加器(`acc`)中,并返回最终的累加器值。在这个例子中,累加器的初始值是一个空对象字面量`{}`。
- 对于数组中的每个元素(`obj`),我们检查累加器是否包含具有相同id的数组。如果没有,我们创建一个空数组。然后,我们将当前对象推入相应的数组中。
- 最后,我们返回更新后的累加器对象。它将具有与每个id对应的数组。
阅读全文