递归处理成树状数据

本文介绍了一种通过遍历数组并使用递归方法来构建嵌套数据结构的技术。该方法适用于处理具有层级关系的数据,例如将扁平化的树形结构转换为带有子节点的嵌套对象形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 /**
  * 1.遍历:找出id == pid的项
  * 2.遍历自己找自己:开辟出一个独立的空间 用于自己对比自己
  * 3.找出一项符合id == pid的项目 运用组合删除思想 组合完成则删除
  * 4.遍历一次只能实现一次,所以要一直遍历,直到不存在id == pid的情况出现
  **/

    const arr = [ {
      id: 2,
      pid: 0,
      name: '0-2'
    }, {
      id: 3,
      pid: 2,
      name: '2-3'
    }, {
      id: 5,
      pid: 2,
      name: '2-5'
    }, {
      id: 6,
      pid: 0,
      name: '0-6'
    }, {
      id: 7,
      pid: 6,
      name: '6-7'
    }, {
      id: 8,
      pid: 6,
      name: '6-8'
    }, {
      id: 5,
      pid: 3,
      name: '3-5'
    } ]

    const ArrFn = ( arr ) => {arr.map( ( item ) => {
      arr.map( ( item1, i ) => {
        if ( item.id == item1.pid ) {
          if ( item.children ) {
            item.children.push( item1 )
            arr.splice( i, 1 )
            ArrFn( arr )
            return item
          } else {
            item.children = []
          }
        } else {
          return
        }
      } )
    } )
    return arr
    }
    ArrFn( arr )
    console.log( ArrFn( arr ) )

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值