后台返回的数据格式
const data = [
{
"id": 1,
"name": "标题1",
"pid": 0
},
{
"id": 2,
"name": "标题2",
"pid": 0
},
{
"id": 3,
"name": "标题3",
"pid": 1
},
{
"id": 4,
"name": "标题4",
"pid": 3
}
]
把一维数组改成多维数组 实现方法
function tree(list,pid = 0){
let arr=[]
list.forEach((item)=>{
if(item.pid===pid){
item.children=tree(list,item.id);
arr.push(item);
}
})
return arr;
}
function tree(data) {
const len = data.length
const res = []
for (let i = 0; i < len; i++) {
data[i].children = [];
if (data[i].pid === 0) { // 父级
res.push(data[i]);
continue; //跳过当前循环
}
for (let j = 0; j < i; j++) {
// 如果pid(父级)等于data[j].id 那就是它的子级,给放到children里
if(data[i].pid === data[j].id){
data[j].children.push(data[i])
break;//退出循环
}
}
}
return res
}
原文链接:https://blog.csdn.net/jayhkw/article/details/68945087
function tree(data) {
let map = {};
let val = [];
data.forEach(it=>{
it.children = [];
map[it.id] = it;
})
data.forEach(it=>{
const parent = map[it.pid];
if(!!parent){
parent.children.push(it);
}else{
val.push(it);
}
})
return val;
}
把多维数组 改成一维数组方法
createClass(data){
let arr = [];
for(let i=0;i<data.length;i++){
if(data[i].children && data[i].children.length > 0){
arr = arr.concat(createClass(data[i].children))
}else{
arr.push({
name:data[i].class_name,
id:data[i].id,
children:[]
})
}
}
return arr;
}