简单的树形无限递归

简单的树形无限递归


数据

let data = [
    {
      id: 1,
      name: 'p1'
    },
    {
      id: 3112,
      pid: 311,
      name: 'p3112'
    },
    {
      id: 11,
      pid: 1,
      name: 'p11'
    },
    {
      id: 2,
      name: 'p2'
    },
    {
      id: 22,
      pid: 2,
      name: 'p22'
    },
    {
      id: 3,
      name: 'p3'
    },
    {
      id: 311,
      pid: 31,
      name: 'p311'
    },
    {
      id: 12,
      pid: 1,
      name: 'p12'
    },
    {
      id: 21,
      pid: 2,
      name: 'p21'
    },
    {
      id: 23,
      pid: 2,
      name: 'p23'
    },
    {
      id: 31,
      pid: 3,
      name: 'p31'
    },
    {
      id: 312,
      pid: 31,
      name: 'p312'
    },
    {
      id: 3111,
      pid: 311,
      name: 'p3111'
    }
  ];

js

let newArr = [];
  function getArr(arr) {
    for (let i = 0, len = arr.length; i < len; i++) {
      if (!arr[i].pid) {
        let son = setArr(arr, arr[i]);
        newArr.push(son)
      }
    }
  }

  function setArr(arr, obj) {
    obj.children = [];
    for (let i = 0, len = arr.length; i < len; i++) {
      if (arr[i].pid === obj.id) {
        obj.children.push(arr[i]);
        setArr(arr, arr[i]);
      }
    }
    return obj;
  }
  getArr(data);
  console.log(newArr);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值