热搜:fiddler git ip ios 代理
历史搜索

js实现树形结构和数组相互转换方法

游客2024-09-15 12:33:01

js实现树形结构和数组相互转换方法 1

实际项目中,经常会遇到树形结构与数组相互转换的问题,所以整理出来,分享给大家。

假如我们有一下数据:

const arr =[
    {id:2,name:'部门 B',parentId:0},
    {id:3,name:'部门 C',parentId:1},
    {id:1,name:'部门 A',parentId:2},
    {id:4,name:'部门 D',parentId:1},
    {id:5,name:'部门 E',parentId:2},
    {id:6,name:'部门 F',parentId:3},
    {id:7,name:'部门 G',parentId:2},
    {id:8,name:'部门 H',parentId:4}
];

数组转树方法:

function toTree (data, pId) {
  const loop = parentId => {
    const res = []
    data.forEach(item => {
      if (item.parentId === parentId) {
        item.children = loop(item.id)
        res.push(item)
      }
    })
    return res
  }
  return loop(pId)
}

树转数组方法:

function treeToArr(data) {
  const result = [];
  data.forEach(item => {
      const loop = data => {
          result.push({
            id: data.id,
            name: data.name,
            parentId: data.parentId
          });
          let child = data.children
          if(child){
            for(let i = 0; i < child.length; i++){
              loop(child[i])
            }
          }
      }
      loop(item);
  })
  return result;
}
标签:JavaScript