translateDataToTree(list){
//筛选出 包含parentId的数组;
let parents=list.filter(value => value.parentId == '0');
//筛选出 包含不parentId的数组;
let childrens = list.filter(value => value.parentId !== '0');
//运用递归方法将子数组插入到父数组
let translator = (parents, childrens) => {
//遍历每一个父数组
parents.forEach((parent)=>{
//遍历子数组 判断子节点的parentId等于父数组的id,
childrens.forEach((child, index) => {
if (child.parentId === parent.id) {
//对子节点数据进行深复制
let temp = JSON.parse(JSON.stringify(childrens));
//让当前子节点从temp中移除,temp作为新的子节点数据,这里是为了让递归时,子节点的遍历次数更少,如果父子关系的层级越多,越有利
temp.splice(index, 1);
//让当前子节点作为唯一的父节点,去递归查找其对应的子节点
translator([child], temp);
//把找到子节点放入父节点的ChildNodes属性中
typeof parent.ChildNodes !== 'undefined' ? parent.ChildNodes.push(child) : parent.ChildNodes = [child];
}
})
})
};
translator(parents, childrens)
//返回最终的结果
return parents
},
父子关系的数组,转换成树形结构
最新推荐文章于 2024-07-19 13:54:51 发布