由数据转为树杈的js 和由一个子节点的id获取所有的父类的id
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 familyTree(arr1, id) { 2 var temp = [] 3 var forFn = function (arr, id) { 4 for (var i = 0; i < arr.length; i++) { 5 var item = arr[i] 6 if (item.id === id) { 7 temp.push(item) 8 forFn(arr1, item.parent_id) 9 break 10 } else { 11 if (item.children) { 12 forFn(item.children, id) 13 } 14 } 15 } 16 } 17 forFn(arr1, id) 18 return temp 19 },
一个子节点的id获取所有的父类的id
由数据转为树杈的js
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 treeData(list) { 2 //树杈生成器 3 let cloneData = JSON.parse(JSON.stringify(list)) // 对源数据深度克隆 4 return cloneData.filter(father => { 5 let branchArr = cloneData.filter(child => father.id == child.parent_id) //返回每一项的子级数组 6 branchArr.length > 0 ? father.children = branchArr : '' //如果存在子级,则给父级添加一个children属性,并赋值 7 return father.parent_id == 0; //返回第一层 8 }); 9 }
已有的事,后必在有,已行的事,后必在行。