js原数组数据
[
{ id: '1001', name: '值1', value: '111' },
{ id: '1001', name: '值1', value: '11111' },
{ id: '1002', name: '值2', value: '25462' },
{ id: '1002', name: '值2', value: '23131' },
{ id: '1002', name: '值2', value: '2315432' },
{ id: '1003', name: '值3', value: '333333' },
]
数组分组结果
[
{
id: '1001',
data: [
{ id: '1001', name: '值1', value: '111' },
{ id: '1001', name: '值1', value: '11111' },
],
},
{
id: '1002',
data: [
{ id: '1002', name: '值2', value: '25462' },
{ id: '1002', name: '值2', value: '23131' },
{ id: '1002', name: '值2', value: '2315432' },
],
},
{ id: '1003', data: [{ id: '1003', name: '值3', value: '333333' }] },
]
实现代码
let map = {}
let arr = [
{ id: '1001', name: '值1', value: '111' },
{ id: '1001', name: '值1', value: '11111' },
{ id: '1002', name: '值2', value: '25462' },
{ id: '1002', name: '值2', value: '23131' },
{ id: '1002', name: '值2', value: '2315432' },
{ id: '1003', name: '值3', value: '333333' },
]
for (let i = 0; i < arr.length; i++) {
let ai = arr[i]
if (!map[ai.id]) {
map[ai.id] = [ai]
} else {
map[ai.id].push(ai)
}
}
let res = []
Object.keys(map).forEach(key => {
res.push({
id: key,
data: map[key],
})
})
console.log(res)