const arr = [
{ id: 1, name:
'部门A'
, parentId: 0 },
{ id: 2, name:
'部门B'
, parentId: 1 },
{ id: 3, name:
'部门C'
, parentId: 1 },
{ id: 4, name:
'部门D'
, parentId: 2 },
{ id: 5, name:
'部门E'
, parentId: 2 },
{ id: 6, name:
'部门F'
, parentId: 3 }
]
function
convert(arr) {
const idToTreeNode =
new
Map()
let tree =
null
arr.forEach(item => {
const { id, name } = item
const treeNode = { id, name }
idToTreeNode.set(id, treeNode)
})
arr.forEach(item => {
const { id, parentId } = item
const parentNode = idToTreeNode.get(parentId)
if
(parentNode) {
if
(parentNode.children ==
null
) parentNode.children = []
parentNode.children.push(idToTreeNode.get(id))
}
else
{
tree = idToTreeNode.get(id)
}
})
return
tree
}
console.log(convert(arr))