js数组与树结构转换
let arr = [
{name:"00",age:4,parent:0,id:1},
{name:"10",age:4,parent:0,id:2},
{name:"1",age:4,parent:1,id:3},
{name:"2",age:4,parent:2,id:4},
{name:"3",age:4,parent:3,id:5},
{name:"4",age:4,parent:2,id:6},
{name:"5",age:4,parent:1,id:7},
{name:"6",age:4,parent:3,id:8},
{name:"7",age:4,parent:4,id:9},
]
// 数组转为树结构
function dataList(arr,parent,result = []){
arr.forEach(ele=>{
let obj = ele
if(ele.parent == parent){
let data = dataList(arr,ele.id)
if(data.length > 0 ){
obj.children = data
}
result.push(obj);
}
})
return result
}
console.log(dataList(arr,0))
let result = dataList(arr,0)
// 树结构转为数组
function resultArr(result,arr = []){
result.forEach(ele=>{
if(ele.children){
arr.push(ele)
resultArr(ele.children,arr)
delete(ele.children)
}
else {
arr.push(ele)
}
})
return arr
}
console.log(resultArr(result))