循环实现数组转树形结构

68 阅读1分钟

本次使用了双重循环的方式实现平铺数据转树形,虽然不高级,但是结构很清晰

<script>
  const arr = [
    {id:'001',pid:'000',name:'001'},
    {id:'002',pid:'000',name:'002'},
    {id:'003',pid:'001',name:'003'},
    {id:'004',pid:'003',name:'004'},
    {id:'005',pid:'003',name:'005'},
    {id:'006',pid:'002',name:'006'},
  ]
  function setMap(arr){
    const map = {}
    const list = []
    arr.forEach((item,index)=>{
      if(!item.children){
        item.children= []
      }
      map[item.id]=item
    })
    arr.forEach((item,index)=>{
      if(map[item.pid]){
        map[item.pid].children.push(item)
      }else{
        list.push(item)
      }
    })
    return list
  }
  const arr1 = setMap(arr)
  console.log(arr1)

输出结果

image.png