tree树的过滤搜索功能
//lists 树的结构
//解释:会重根节点循环,因为他是一个同步的一个结构,当走到递归那的时候后面的就不会执行只有等递归那结束以后再回执行判断语句 最后return 出去
const dataSourceDG = (lists) => {
const list:any = []
//循环树然后进行递归操作
lists.forEach(item => {
let chil = []
//判断是否有下一个节点
if (item.child && item.child.length > 0) {
//把当前的这个方法给装起来 因为是一个同步关系 所以后面的判断语句不会执行会等前面的语句执行完成后才会继续执行后面的判断条件然后就一层层判断
chil = dataSourceDG(item.child)
}
//如果有下一级的时候就把对应的数据复制给新的child
if (chil.length > 0) {
item.child = chil
list.push(item)
} else {
//没有子集的时候去判断对应的是否有达到要求的数据如果有就把对应的数据保存起来因为只找到这一层,所以要把child复制为空
if (isBool(item)) {
list.push(item)
item.child = []
}
}
})
return list
}