let list = [
{id: 1, name: 'A', parentId: 0},
{id: 2, name: 'B', parentId: 0},
{id: 3, name: 'A-1', parentId: 1},
{id: 4, name: 'A-2', parentId: 1},
{id: 5, name: 'B-1', parentId: 2},
{id: 6, name: 'A-1-1', parentId: 3},
{id: 7, name: 'B-1', parentId: 2},
{id: 8, name: 'A-2-1', parentId: 4}
]
const convert = (list) => {
let res = []
let map = {}
list.forEach((item) => {
map[item.id] = item
})
list.forEach(item => {
if(item.parentId !== 0){
if(map[item.parentId].children){
map[item.parentId].children.push(item)
} else {
map[item.parentId].children = [item]
}
} else {
res.push(item)
}
})
return res
}
console.log(convert(list))
console