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) {
if(!arr.length) return arr
let idToTreeNode = new Map()
let root = null
arr.forEach(item => {
const { id, name, parentId } = item
const treeNode = { id, name }
idToTreeNode.set(id, treeNode)
if(parentId === 0) root = treeNode
//取的其实还是treeNode,只不过变量名写成了parentNode,下面对parentNode的修改其实是对treeNode的修改
const parentNode = idToTreeNode.get(parentId)
if(parentNode) {
if(parentNode.children == null) parentNode.children = []
parentNode.children.push(treeNode)
}
})
return root
}
console.log(convert(arr))
js将数组转化为树
于 2022-09-22 16:43:18 首次发布