1.双层filter过滤
第一层 item 定义为father newArr接收
第一层过滤出最顶层数组
判断 branchArr的长度 存在father.children=branchArr
否则为空
return father.pid === 0
第二层 item 定义为child branchArr接收
里层 判断pid是否存在(没有子集的pid为0)
存在返回 father ID与child pID相同的元素
拿每一个元素和所有元素进项比较判断
如果ID与pid相同返回拿到的是该元素的子集集合
let idList=[
{
id:1001,
level:0,
name:"企业信息",
titleNum:"",
isLeaf:false,
caseId:"",
pid:0
}, {
id:1002,
level: 1,
name: "基本信息",
titleNum:"",
isLeaf: true,
caseId:"A1001",
pid: 1001
}, {
id: 1003,
level: 1,
name: '高管信息',
titleNum:"",
isLeaf: true,
caseId:"A1002",
pid: 1001
}
]
let newArr=[]
newArr = this.state.list.filter((father,index) => {
/*branchArr 子集*/
let branchArr = this.state.list.filter((child,key) => {
if (idList.includes(child.pid)) {
return father.id === child.pid
} else {
child.pid = 0;
/*child.titleNum=index+"."+newArr;*/
return father.id === child.pid
}
});
branchArr.length > 0 ? father.children = branchArr : '';
/*newArr 父集层*/
return father.pid === 0;
});