此篇文章为记录自己在写代码中遇到问题记录,可忽略
~~ ~~
返回的数据中,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)
});