栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

数组转化成树

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数组转化成树

一.需求:

后端接口返回的数据一般是平铺的数组结构,而不会是树形结构,例如下面的平铺数组结构:

data = 
[
  {id:"01", name: "张大大", pid:"", job: "项目经理"},
  {id:"02", name: "小亮", pid:"01", job: "产品leader"},
  {id:"03", name: "小美", pid:"01", job: "UIleader"},
  {id:"04", name: "老马", pid:"01", job: "技术leader"},
  {id:"05", name: "老王", pid:"01", job: "测试leader"},
  {id:"06", name: "老李", pid:"01", job: "运维leader"},
  {id:"07", name: "小丽", pid:"02", job: "产品经理"},
  {id:"08", name: "大光", pid:"02", job: "产品经理"},
  {id:"09", name: "小高", pid:"03", job: "UI设计师"},
  {id:"10", name: "小刘", pid:"04", job: "前端工程师"},
  {id:"11", name: "小华", pid:"04", job: "后端工程师"},
  {id:"12", name: "小李", pid:"04", job: "后端工程师"},
  {id:"13", name: "小赵", pid:"05", job: "测试工程师"},
  {id:"14", name: "小强", pid:"05", job: "测试工程师"},
  {id:"15", name: "小涛", pid:"06", job: "运维工程师"}
]

这样的数据可以直接在table中使用,但是不能直接在tree组件中使用,所以需要我们做一些转换。

二.源码:

script里面的函数源码:

methods: {

    dataToTree() {

      // 查找出一级人员

      const res1 = this.data.filter((item) => item.id === "01");

      // 查找出二级人员

      const res2 = this.data.filter((item) => item.pid === "01");

      // 定义一级人员架构

      this.treeData1 = [

        {

          label: res1[0].job + "-" + res1[0].name,

          children: [],

        },

      ];

      for (let i = 0; i < res2.length; i++) {

        // 把二级人员对象提取出来

        const element = res2[i];

        // 查找出三级人员

        const res3 = this.data.filter((item) => item.pid === element.id);

        // 定义二级人员架构

        const treeData2 = {

          label: element.job + "-" + element.name,

          children: [],

        };

        for (let j = 0; j < res3.length; j++) {

          // 定义三级人员架构

          const treeData3 = {

            label: res3[j].job + "-" + res3[j].name,

            children: [],

          };

          // 将三级人员结构放入二级人员结构的children中

          treeData2.children.push(treeData3);

        }

        // 将二级人员结构放入一级人员结构的children中

        this.treeData1[0].children.push(treeData2);

      }

      console.log(this.treeData1);

    },

  },

 三.主要技术:

1.用vue和Element组件布局

2.利用递归循环遍历数组获得自己所需要的各类数据然后依据需求放入对应的位置,具体操作见上图函数代码

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291865.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号