js 查找数组对象中id相同的元素,把他们放到新数组对象中
js 查找数组对象中id相同的元素,把他们放到新数组对象中
可以使用JavaScript中的Array.prototype.reduce方法来实现这个功能。以下是一个示例代码:
const items = [{ id: 1, name: '张三',age:'16' },{ id: 2, name: '李四',age:'20' },{ id: 1, name: '张三',age:'17' },{ id: 3, name: '王二',age:'21' },{ id: 1, name: '张三',age:'18' }
];const groupedById = items.reduce((acc, item) => {const existingGroupWithId = acc.find(group => group.id === item.id);if (existingGroupWithId) {existingGroupWithId.items.push(item);} else {acc.push({ id: item.id, items: [item] });}return acc;
}, []);console.log(groupedById);
这段代码会输出一个新数组,其中的每个对象都包含一个id和一个items数组,items数组包含所有具有相同id的元素。在这个例子中,输出将是:
[{"id": 1,"name": "张三","items": [{"id": 1,"name": "张三","age": "16"},{"id": 1,"name": "张三","age": "17"},{"id": 1,"name": "张三","age": "18"}]},{"id": 2,"name": "李四","items": [{"id": 2,"name": "李四","age": "20"}]},{"id": 3,"name": "王二","items": [{"id": 3,"name": "王二","age": "21"}]}
]