直接上代码
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真的很好用
思路应该不用讲了吧 一看就明白了