Ant Design Vue 树形控件中通过递归将数组转为treeData数据

前言

这段时间在项目的时候遇到一个要使用递归将后端返回来的Array数据转成在Ant Design Vue
可以直接绑定的 ( :tree-data=“treeData” )多个根目录且不限制层级数量的数据,经过不懈的努力,终于写好了,记录一下。


提示:以下是本篇文章正文内容,下面案例可供参考

1.获取数据

代码如下(示例):

    // 获取数组数据
    getData() {
      xxxxxxxxx().then((res) => { //xxxxxx为接口
        console.log("所有目录信息", res.data);
        this.treeData = this.getTreeData(res.data) // 拿到数据,调用
      });
    },

2.递归数据处理(多个根节点且不限制层级数量)

代码如下(示例):

	// 处理数据
    getTreeData(val) {
      //根据后端返回数据,先将根节点与其它节点分离
      let parent = val.filter((item) => item.FatherId === null); //此处根据实际业务判断
      let child = val.filter((item) => item.FatherId != 0); //此处根据实际业务判断
      
	  //对所有根节点添加children数组key,并进入方法
	  //title和key为ui框架必传值
      parent.filter((item) => {
        item.children = sonArrs(item.id, child)
        item.title = item.title
        item.key = item.id
      });
      
      //递归方法
      function sonArrs(id, childs) {
      
        //结束条件
        if(!childs.length) return
		
		//定义数组,匹配上一级节点的子节点数据并返回
        let arr = childs.filter((item) => {
          return item.FatherId === id;
        });

		//对上一步返回的节点添加children数组,title和key
        arr.filter((item) => {
          item.children = []
          item.title = item.title
          item.key = item.id
        });
		
		//定义数组,匹配上一级节点的下下层数据并返回
        let sonArr = childs.filter((item) => {
          return item.FatherId !== id;
        });

		//开启递归
        arr.forEach(element => {
          element.children = sonArrs(element.id,sonArr)
        });

		//返回的为上一级的children的value
        return arr
      }
		
	  //最终返回treeData格式数据
      return parent;
    },

总结

在这里插入图片描述

以上就是今天要讲的内容,本文简单介绍了使用递归处理数据,如果对你有所帮助,希望可以点赞收藏,如果有不正确的地方或者不好理解的地方还希望留言希望指出,一同探讨进步

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值