JavaScript树-平铺互相转换

const originData = [

    { pid: 0, id: 1, name: '中国' },

    { pid: 1, id: 2, name: '北京' },

    { pid: 2, id: 20, name: '朝阳' },

    { pid: 20, id: 200, name: '朝阳1号' },

    { pid: 2, id: 21, name: '海淀' },

    { pid: 21, id: 201, name: '海淀1号' },

    { pid: 1, id: 3, name: '上海' },

    { pid: 3, id: 22, name: '浦东' },

    { pid: 22, id: 211, name: '浦东1号' },

    { pid: 3, id: 23, name: '虹口' },

    { pid: 23, id: 221, name: '虹口1号' },

    { pid: 1, id: 4, name: '浙江' },

    { pid: 4, id: 33, name: '杭州' },

  ]

//一维数组转树

function handleTreeData(list, id = 0, resultArr = [], childer = []) {

    list.forEach(item => {

      if (item.pid === id) {//如果他有pid表示他不是第一层子集 push搭配数组里面

        resultArr.push(item)

        childer = handleTreeData(list, item.id)

        if (childer.length > 0) {

          console.log(childer);

          item.childer = childer

        }

      }

    });

    return resultArr

  }

//树平铺


  const tree = handleTreeData(arr)

  console.log(tree);

  function handleTileData(list,tileList=[]) {

    list.forEach(item=>{

      tileList.push({pid:item.pid,id:item.id,name:item.name})

      if(item.childer instanceof Array){

        handleTileData(item.childer,tileList)

      }

    })

    return tileList

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值