將扁平化的數組處理為樹結構數據,我們可以利用對象來處理,對象的復制是淺拷貝,指向相同的內存地址:
var arr = [ { id: 0, pid: -1, name: 'sadas' }, { id: 1, pid: -1, name: 'sadas' }, { id: 2, pid: -1, name: 'sadas' }, { id: 3, pid: -1, name: 'sadas' }, { id: 4, pid: 1, name: 'sadas' }, { id: 5, pid: 1, name: 'sadas' } ] var obj = {} arr.map((v, i) => { if (obj[v.pid]) { if (obj[v.pid].children) { obj[v.pid].children.push(v) } else{ obj[v.pid].children = [v] } } else{ obj[v.pid] = { children: [v] } } if (obj[v.id]) { v.children = obj[v.id].children } obj[v.id] = v }) console.log(obj[-1])