SOURCE

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 命令行工具 X clear

                    
>
console