数据是这样的
`
const arr = [{
id: 1,
age: 123
},
{
id: 2,
age: 12
},{
id: 2,
age: 90
},{
id: 2,
age: 1222
},{
id: 1,
age: 9090
}]
`
最终数据是这样
`
// obj是根据id相同的次数push,比如以上id=1重复了2次,id=2重复了3次,最终结构如下
const obj = {
name: 'name是写死的,就是这样'
}
const arr = [{ // id=1出现两次,children里就push两个对象
id: 1,
age: 123,
children: [{
name: 'name是写死的,就是这样'
},{
name: 'name是写死的,就是这样'
}
]
},
{
id: 2, // id=2出现三次,children里就push三个对象
age: 12,
children: [{
name: 'name是写死的,就是这样'
}, {
name: 'name是写死的,就是这样'
}, {
name: 'name是写死的,就是这样'
}
]
}]
`
写不出来,感谢不吝赐教
声明一个空数组result,用来存储结果,假设里面的每一项叫data。
声明一个用一个空对象obj,用来存储id->data的映射。
遍历源数组attr,对于每一项item判断是否存在
obj[item.id]
obj[item.id] = data
并往obj[item.id]
的children里加一项obj[item.id]
的children里加一项遍历完成则result就是你想要的结果。
这个是思路,本来写代码比打这么多字快得多,但所谓”授人以鱼不如授人以渔“,就不给代码实现了。