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

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

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

假如我们有一下数据:

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;
}

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

使用声明:
1. 本站所有素材(未指定商用),仅限学习交流。
2. 会员在本站下载的VIP素材后,只拥有使用权,著作权归原作者及码云笔记网所有。
3. 原创商用和VIP素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 本平台织梦模板仅展示和个人非盈利用途,织梦系统商业用途请预先授权。
码云笔记 » js实现树形结构和数组相互转换方法

发表回复

IT互联网行业相关广告投放 更专业 更精准

立即查看 联系我们