平铺数组怎么转树形数组?

112 阅读1分钟

平铺数组怎么转树形数组呢?这个问题想必大家都很想知道,我们在日常开发中经常会遇到......

算了不编了,反正也没人看,直接把代码拖上来吧

const arr = [
  {id: "2b", class: "", name: "人事部"},
  {id: "2c", class: "", name: "财务部", },
  {id: "2d", class: "2c", name: "财务核算部"},
  {id: "2e", class: "2c", name: "税务管理部"},
  {id: "2f", class: "2c", name: "薪资管理部"}
]
function tranListToTreeData(arr) {
  // 1.定义一个映射,方便通过下级对象获取上级对象
  const map = {}
  arr.forEach(item => {
    item.children = []
    map[item.id] = item
  }) 
  console.log(map);
  console.log(arr);
  // 2.循环arr,如果item有上级(有class),将item加入上级(pItem)
  //   如果item没有上级则直接把item加入新数组
  const treeArr = []
  arr.forEach(item => {
    if (item.class) {
      console.log(item.class);
      const pItem = map[item.class]
      pItem.children.push(item)
    } else {
      treeArr.push(item)
    }
  });
  return treeArr
}

const treeArr = tranListToTreeData(arr)
console.log(treeArr)
// [
//   {id: "2b", class: "", name: "人事部",children: []},
//   {id: "2c", class: "", name: "财务部", children: [
//     {id: "2d", class: "2c", name: "财务核算部"}
//     {id: "2e", class: "2c", name: "税务管理部"}
//     {id: "2f", class: "2c", name: "薪资管理部"}
//   ]}
// ]

没了