let list =[
{id:1, name:'A', parentId:0},
{id:2, name:'B', parentId:0},
{id:3, name:'C', parentId:1},
{id:4, name:'D', parentId:1},
{id:5, name:'E', parentId:2},
{id:6, name:'F', parentId:3},
{id:7, name:'G', parentId:2},
{id:8, name:'H',parentId:4}
];
const result = convert(list);
let result = [
{
id: 1,
name: 'A',
parentId: 0,
children: [
{
id: 3,
name: 'C',
parentId: 1,
children: [
{
id: 6,
name: 'F',
parentId: 3
}, {
id: 16,
name: 'L',
parentId: 3
}
]
},
{
id: 4,
name: 'D',
parentId: 1,
children: [
{
id: 8,
name: 'H',
parentId: 4
}
]
}
]
},
···
];
答案:
let list =[
{id:1, name:'A', parentId:0},
{id:2, name:'B', parentId:0},
{id:3, name:'C', parentId:1},
{id:4, name:'D', parentId:1},
{id:5, name:'E', parentId:2},
{id:6, name:'F', parentId:3},
{id:7, name:'G', parentId:2},
{id:8, name:'H',parentId:4}
];
// const result = convert(list);
function newArr(arr){
var result = {}
arr.forEach((item,index)=>{
result[item.parentId] = result[item.parentId] ? result[item.parentId].concat(item) : [item];
})
return result;
}
var resltArr = newArr(list);
console.log(resltArr)
list = list.map((item,index)=>{
return {
...item,
children : resltArr[item.id],
}
})
console.log(JSON.stringify(list))