把json对象改成树状型
插件
json数据的树形列表
https://github.com/lslvxy/bootstrapTable-treeView
纯js
eg:把
testData:[
{
id:'1',
name:"aa",
desc:"这是一个描述",
parentId:null,
},{
id:'11',
name:"aa_sub1",
desc:"这是一个描述_sub1",
parentId:'1',
},{
id:'111',
name:"aa_sub1_sub2",
desc:"这是一个描述_sub1_sub2",
parentId:'11',
},
{
id:'2',
name:"bb",
desc:"这是一个描述",
parentId:null,
},
{
id:'22',
name:"bb_sub1",
desc:"这是一个描述_sub1",
parentId:'2',
},{
id:'23',
name:"bb_sub2",
desc:"这是一个描述_sub2",
parentId:'2',
},{
id:'233',
name:"bb_sub2_sub2",
desc:"这是一个描述_sub2_sub2",
parentId:'23',
},{
id:'2333',
name:"bb_sub2_sub2_sub2",
desc:"这是一个描述_sub2_sub2_sub2",
parentId:'233',
},{
id:'23333',
name:"bb_sub2_sub2_sub23",
desc:"这是一个描述_sub2_sub2_sub2",
parentId:'233',
},{
id:'233333',
name:"bb_sub2_sub2_sub233",
desc:"这是一个描述_sub2_sub2_sub2",
parentId:'233',
},{
id:'24',
name:"bb_sub3",
desc:"这是一个描述_sub3",
parentId:'2',
},
]
这对象改成:
[
{
id:'1',
name:"aa",
desc:"这是一个描述",
parentId:null,
"children": [
{
id:'11',
name:"aa_sub1",
desc:"这是一个描述_sub1",
parentId:'1',
"children": [
{
id:'111',
name:"aa_sub1_sub2",
desc:"这是一个描述_sub1_sub2",
parentId:'11',
"children": []
}
]
}
]
},
{
id:'2',
name:"bb",
desc:"这是一个描述",
parentId:null,
"children": [
{
id:'22',
name:"bb_sub1",
desc:"这是一个描述_sub1",
parentId:'2',
"children": [
{
id:'222',
name:"bb_sub2_sub2",
desc:"这是一个描述_sub2_sub2",
parentId:'22',
"children": []
}
]
},
{
id:'23',
name:"bb_sub2",
desc:"这是一个描述_sub2",
parentId:'2',
"children": [
{
id:'233',
name:"bb_sub2",
desc:"这是一个描述_sub2",
parentId:'23',
"children": []
}
]
},
]
}
]
这种形式
修改代码:
generateData(){
const data=this.testData
data.forEach((item)=>{
delete item.children;
})
let map={};
data.forEach(function(item){
//console.log(item)
map[item.id]=item;
});
let val=[];
data.forEach(function(item){
//console.log(item)
let parent=map[item.parentId];
if(parent){
(parent.children||(parent.children=[])).push(item);
}else{
val.push(item);
}
});
this.data=val
//console.log(val)
//returnval
},
结果变成:
树状改成json:
peopleData是一个树状结构的对象
mounted() {
const data = this.peopleData
this.spread(data)
console.log(this.menuArr)
let arr=[]
this.menuArr.forEach(item=>{
if(item.fullname!==undefined){
arr.push(item)
}
})
console.log(arr)
},
methods: {
spread(menus) {
for (var i = 0; i < menus.length; i++) {
this.menu = menus[i]
if (this.menu.children) {
this.spread(this.menu.children)
delete this.menu.children
}
this.menuArr.push(this.menu)
}
}
}