let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 1},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]
two ways
let root =[]
for (let i = 0; i < arr.length; i++) {
const parents = arr.find(v => v.id == arr[i].pid)
if (parents) {
parents.children ? parents.children.push(arr[i]) : (parents.children = [arr[i]])
} else {
root.push(arr[i])
}
}
const obj = {}
arr.forEach(item => {
item.children = []
obj[item.id] = item
})
arr.forEach(item => {
if (obj[item.pid]) {
obj[item.pid].children.push(item)
} else {
root.push(item)
}
})
Article source https://juejin.cn/post/6983904373508145189