一个代码短更好理解的平铺结构转树形结构方法

251 阅读1分钟

直接上代码

    let arr = [        { id: 1, name: '小A', pid: 0 },        { id: 2, name: '小B', pid: 1 },        { id: 3, name: '小C', pid: 1 },        { id: 4, name: '小D', pid: 3 },        { id: 5, name: '小E', pid: 4 },    ]    function toTree ({ arr, idKey = 'id', pidKey = 'pid', childKey = 'children', parentId = 0 }) {        let tree = arr.filter((item) => {            item.child = arr.filter((v) => v[pidKey] == item[idKey])            return item.pid === parentId        })        return tree    }    console.time('tree')    toTree({ arr, parentId: 0 })    console.timeEnd('tree')

个人感觉会比一般的树形结构转换好理解一些 效率没有跟其他的写法比较 

filter真的很好用 

思路应该不用讲了吧  一看就明白了