将扁平数据转成树状数据,转化中间可以添加自己想要的字段(序号等等)
export const flatTransTree = (ids,list) => {
let newArr = []
newArr = list.filter(father => {
let branchArr = list.filter(child => {
if (ids.includes(child.pid)) {
return father.id === child.pid
} else {
child.pid = 0
return father.id === child.pid
}
});
branchArr.length > 0 ? father.children = branchArr : '';
return father.pid === 0;
});
return newArr;
}
ids为所有扁平数据id的集合
let ids=[]
this.state.list.forEach(ele => {
ids.push(ele.id)
});
//然后调用即可
let newArr = flatTransTree(ids, this.state.list)
console.log(newArr,2)
下面数据demo参考
this.state = {
list:[
{
id:1001,
level:0,
name:'name1',
isLeaf:false,
pid:null
}, {
id:1002,
level: 1,
name: 'name2',
isLeaf: true,
pid: 1001
}, {
id: 1003,
level: 1,
name: 'name3',
isLeaf: true,
pid: 1001
}, {
id: 1004,
level: 1,
name: 'name4',
isLeaf: false,
pid: 1001
}, {
id: 1005,
level: 2,
name: 'name5',
isLeaf: true,
pid: 1004
},
{
id: 1011,
level: 0,
name: 'name6',
isLeaf: true,
pid: null
}
]
扁平数据转树状结构
3769

被折叠的 条评论
为什么被折叠?



