function treeData(data){ let cloneData = JSON.parse(JSON.stringify(data)) return cloneData.filter(father=>{ let branchArr = cloneData.filter(child => father['id'] == child['pid']); branchArr.length>0 ? father['children'] = branchArr : ''; return father['pid'] == 0 ; }) }
function toTree(data) { let result = [] if (!Array.isArray(data)) { return result } data.forEach(item => { delete item.children; }); let map = {}; data.forEach(item => { item.expand = false; map[item.id] = item; }); data.forEach(item => { let parent = map[item.pid]; if (parent) { (parent.children || (parent.children = [])).push(item); } else { result.push(item); } }); return result; }
//数据源组装成树形结构(一级与后面的级逻辑不同)
逻辑:开始遍历所有数据,根据一级关系找出一级,调用二级方法;将2级方法抽离出来,在2级方法中遍历所有数据,并根据一级与2级的关系找出2级
function first(data,arr,0){
for(var i =0;i<data.length;i++){
if(data[i].pid == 0){
arr.push(data[i]);
two(data,data[i].id);
}
}
}
function two (data,pid){
var arr = [];
for(var i = 0;i<data[i].length;i++){
if(data[i].pid == pid){
arr.push(data[i])
}
}
return arr;
}