数组内id相同的组成新数组
时间: 2023-09-25 20:10:17 浏览: 46
要将数组中具有相同ID的元素组成的数组,你可以使用`reduce`方法来实现。以下是一个示例代码:
```javascript
const array = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 2, name: 'Tom' }
];
const groupedArray = array.reduce((acc, curr) => {
const existingGroup = acc.find(group => group.id === curr.id);
if (existingGroup) {
existingGroup.items.push(curr);
} else {
acc.push({ id: curr.id, items: [curr] });
}
return acc;
}, []);
console.log(groupedArray);
```
在上述代码中,我们有一个名为`array`的数组,其中包含了多个对象,每个对象都有一个`id`属性。
通过使用`reduce`方法,我们遍历原始数组,并使用`find`方法来查找新数组`acc`中是否已经存在具有相同ID的元素组。如果存在,则将当前元素添加到现有的组中;如果不存在,则创建一个新的组,并将当前元素作为第一个元素。
最后,我们得到了一个新数组`groupedArray`,其中具有相同ID的元素被组成了各自的组。
在上述示例中,新数组中的元素顺序与原始数组保持一致。如果你希望按照特定的排序规则对新数组进行排序,可以在最后添加相应的排序逻辑。