将arr转换为tree结构2种方式

1.包array-to-tree

import arrayToTree from 'array-to-tree'
export function transArray(arr){
   return  arrayToTree(arr,{
     parentProperty: 'parentId',  //指向父节点的属性名称,默认"parend_id"
     childrenProperty:'arrs'  //存储子节点的属性名称,默认"children"
     customID: 'Id' //唯一节点标识符,默认"id"
   })
}

2.字典映射

  let arr = [ 
         { Id: 1, name: '数据1', parentId: null },
         { Id: 2, name: '数据1-1', parentId: 1 },
         { Id: 3, name: '数据1-1-1', parentId: 2 },
         { Id: 4, name: '数据1-2', parentId: 1 }, 
         { Id: 5, name: '数据2', parentId: null }, 
         { Id: 6, name: '数据2-1', parentId: 5 }
      ]
  function toTree(arg){
     const newArr = [];
     const map = {} //存储映射关系
     arg.forEach(item=>{
         if(!item.children){
             item.children = []
         }
        map[item.Id] = item
     })
     arg.forEach(item=>{
         if(item.parentId){
           map[item.parentId].children.push(item)
         }else{
           newArr.push(item)
         }
     })
    return newArr
  }
toTree(arr)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容