js怎么把普通数组数据转为树形结构

文章展示了如何使用JavaScript处理数据列表,将具有parentId属性的对象转换成树形结构。两种方法被提及:一种是基于循环遍历的方式,另一种是采用递归函数实现。这两种方法都用于组织具有层级关系的数据。
摘要由CSDN通过智能技术生成
<script>
  const list = [
    {
      id: 1,
      label: 'test1',
      parentId: 0,
    },
    {
      id: 2,
      label: 'test2',
      parentId: 1,
    },
    {
      id: 3,
      label: 'test3',
      parentId: 1,
    },
    {
      id: 4,
      label: 'test4',
      parentId: 2,
    },
    {
      id: 5,
      label: 'test5',
      parentId: 2,
    },
    {
      id: 6,
      label: 'test6',
      parentId: 3,
    },
    {
      id: 7,
      label: 'test7',
      parentId: 0,
    }
  ]

  // 循环的方式
  function getTreeList (list) {
    const treeList = []
    list.forEach((item) => {
      item.childList = list.filter((sec) => {
        return sec.parentId === item.id
      })
      if (item.parentId === 0) {
        treeList.push(item)
      }
    })
    return treeList
  }
  console.log(getTreeList(list))
  
  // 递归方式
  function getTreeList(list, parentId) {
    const treeList = []
    list.forEach((item) => {
      if (item.parentId == parentId) {
        treeList.push(item)
        item.childList = getTreeList(list, item.id)
      }
    })
    return treeList
  }
  console.log(getTreeList(list, 0))
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值