代码展示:
lineConvertToTree(list=[]) {
let rootArr = [],childListToKeyValue={};
if (!utils.isArray(list)) return rootArr;
// 组装根节点
for(let i=0;i
if(list[i].parentId===null||list[i].parentId===undefined&&list[i].parentId===''){
rootArr.push(...list.splice(i,1));
i--;
}
}
// 将子节点转为key:value对象
for(let i=0;i
if(!childListToKeyValue[list[i].parentId]){
childListToKeyValue[list[i].parentId]=[];
}
childListToKeyValue[list[i].parentId].push(list[i]);
}
// 多个树集合
for(let i=0;i
// todo 递归:借助一个数组,将相关数据集合在一起、循环,达到递归作用
let currentChildren=[rootArr[i]];
// 通过id与parentId对应关系,组成tree结构
while(currentChildren.length>0){
let currentNode=currentChildren.shift();
currentNode.children=childListToKeyValue[currentNode.id]?childListToKeyValue[currentNode.id]:[];
currentChildren=[...currentChildren,...currentNode.children];
}
}
return rootArr;