let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 1},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]
let arr1=[],arr2=[];
arr.forEach(item=>{
arr1.push(item.id)
})
for(let i=0;i<arr.length;i++){
for(let j=i;j<arr.length;j++){
if( arr1.indexOf(arr[j].pid)===-1){
arr2.push({...arr[j],children:[]})
}
}
}
for(let i=0;i<arr.length;i++){
maxHierarchy(arr[i],arr2)
}
function maxHierarchy(obj,arr){
for(let i=0;i<arr.length;i++){
if(obj.pid===arr[i].id){
if( arr[i].children){
arr[i].children.push(obj)
}else{
arr[i].children=[]
arr[i].children.push(obj)
}
return
}
if(arr[i].children?.length){
maxHierarchy(obj,arr[i].children)
}
}
}
console.log(arr2)
js基本数据转成tree结构
最新推荐文章于 2023-06-10 11:33:41 发布