递归取树形结构值

此篇文章为记录自己在写代码中遇到问题记录,可忽略
在这里插入图片描述

~~ ~~
返回的数据中,children为树干,knowledgePoints为树叶 ,可以选中为树叶,
在这里插入图片描述

方法一: 一层层遍历, 缺点: 代码臃肿,可读性差,影响性能,且并不知道树结构有多少层,也不知道需要遍历多少遍,

方法二: 递归取需要的值

// 封装递归方法
	 treeForeach(tree, func) {
	      tree.forEach((data) => {
	        func(data);
	   
		  // 这一步 是需要处理我的数据,把knowledgePoints合并带children, 可以忽略...
	      // if (data.knowledgePoints) {
	      //   data.knowledgePoints.map((item) => {
	      //    	data.children.push(item);
	      //    });
	      //    delete data.knowledgePoints;
	      //  }
	      
			// 判断是否还有children,如果有再次调用递归方法,传入cildren值进行处理 
	         data.children && this.treeForeach(data.children, func);
	      });
   	 },


// 调用函数, 传入数据, 做数据处理
	this.treeForeach(this.knowledgeOptions, (node) => {
	   // some code
	     
	     // 打印所有的id
	     console.log(node.id)
	 });
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值