1、list转换成tree;
//oldArr参数是list集合;parentnodes 这个是父节点的id;
listToTree(oldArr){
if(oldArr.length > 0){
oldArr.forEach(element => {
let parentnodes = element.parentnodes;
if(parentnodes !== '0'){
oldArr.forEach(ele => {
if(ele.id == parentnodes){
//当内层循环的ID== 外层循环的parendId时,(说明有 children),需要往该内层id里建个children并push对应的数组;
if(!ele.ChildNodes){
ele.ChildNodes = [];
}
ele.ChildNodes.push(element);
}
});
}
});
oldArr = oldArr.filter(ele => ele.parentnodes == '0'); //这一步是过滤,按树展开,将多余的数组剔除;
}
return oldArr;
},
2、tree转换成list;
//treeList 为树形结构的数据;子集存在ChildNodes
treeListToList(treeList) {
// 将树结构的列表转换为普通列表
let list = [];
this.handleTreeList(treeList, list);
return list;
};
//处理树结构
handleTreeList(treeList, list) {
if (!treeList || !treeList.length) {
return;
}
for (let i = 0; i < treeList.length; i++) {
let currentRow = treeList[i];
let newRow = JSON.parse(JSON.stringify(currentRow));
newRow.ChildNodes = undefined;
list.push(newRow);
this.handleTreeList(currentRow.ChildNodes, list);
}
},