const arr2 = [1, [2, [3, 4]]]
console.log(arr2.flat(Infinity))
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 },
]
const getTree = (array) => {
const treeList = []
const map = {}
array.forEach(item => {
if (!item.children) {
item.children = []
}
map[item.id] = item
})
array.forEach(item => {
// 对于每一个元素来说,先找它的上级
// 因为map中的对象键值名是以id为值的 所以如果当map的键值名===pid说明他是上级(如果她存在) 反之则是最顶级
let parent = map[item.pid]
if (parent) {
parent.children.push(item)
} else {
treeList.push(item)
}
})
console.log(treeList)
return treeList
}
getTree(arr)