将一个数组中相同id的提取出来
时间: 2023-11-13 21:03:21 浏览: 34
假设数组中每个元素是一个对象,其中包含一个id属性,可以使用JavaScript中的reduce函数来实现:
```javascript
const arr = [
{id: 1, name: 'Tom'},
{id: 2, name: 'Jerry'},
{id: 1, name: 'Tim'},
{id: 3, name: 'Alice'},
{id: 2, name: 'Bob'}
];
const result = arr.reduce((acc, cur) => {
const index = acc.findIndex(item => item.id === cur.id);
if (index === -1) {
acc.push({id: cur.id, names: [cur.name]});
} else {
acc[index].names.push(cur.name);
}
return acc;
}, []);
console.log(result);
// Output: [
// {id: 1, names: ['Tom', 'Tim']},
// {id: 2, names: ['Jerry', 'Bob']},
// {id: 3, names: ['Alice']}
// ]
```
在reduce函数中,acc表示累加器,初始值为一个空数组[],cur表示当前正在处理的元素。对于每个元素,我们查找累加器数组中是否已经存在相同id的元素,如果不存在,则将当前元素添加到累加器数组中;否则,将当前元素的name属性添加到已存在的元素中。最终返回累加器数组即可。