将扁平数据转成树状数据

扁平数据转树状结构

将扁平数据转成树状数据,转化中间可以添加自己想要的字段(序号等等)

 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
        }
      ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值