let arr = [{ id:4, name:'ddd', pid:'1', },{ id:7, name:'ggg', pid:'2', },{ id:8, name:'hhh', pid:'6', },{ id:5, name:'eee', pid:'3', },{ id:6, name:'fff', pid:'2', },{ id:1, name:'aaa', pid:'0', },{ id:2, name:'bbb', pid:'0', },{ id:3, name:'ccc', pid:'0', },{ id:9, name:'iii', pid:'8', },{ id:10, name:'jjj', pid:'1', },{ id:11, name:'kkk', pid:'10', }]
//数组转树
function arrayToTree(arr,pid = 0){
return arr.reduce((list,cur)=>{
if(cur.pid == pid){
list.push(cur)
let children = arrayToTree2(arr,cur.id)
if(children.length){cur.children = children}
}
return list
},[])
}
let tree = arrayToTree(arr)
console.log(tree);
//树转数组
function treeToArray(tree){
return tree.reduce((arr,cur)=>{
if(cur.children&&cur.children.length){
const children = treeToArray(cur.children)
delete cur.children
arr.push(cur,...children)
}else{
arr.push(cur)
}
return arr
},[])
}
let list = treeToArray(tree)
console.log(list)