扁平化数组转树形结构,效率比递归高

462 阅读1分钟
const arrData = [
    { id: 2, name: '部门B', parentid: null },
    { id: 3, name: '部门C', parentid: 1 },
    { id: 1, name: '部门A', parentid: 2 },
    { id: 4, name: '部门D', parentid: 1 },
    { id: 5, name: '部门E', parentid: 2 },
    { id: 6, name: '部门F', parentid: 3 },
    { id: 7, name: '部门G', parentid: 2 },
    { id: 8, name: '部门H', parentid: 4 },
];

const listToTreeData = (list, pid) => {
    const temp = []
    const obj = {}
    list.map(item => obj[item.id] = item)
    list.map(item => {
        const id = item.parentid
        if(id === pid) return temp.push(item)
        obj[id].children ? obj[id].children.push(item) : obj[id].children = [item]
    })
    return temp
}