/*
需求:使用筛选条件筛选 结构保持不变 不如:筛选子级 要带上父级
思路:
使用递归 循环每条数据 item
每个item 就会比对是否符合所有筛选条件( searchObj是筛选条件 )
如果符合就push 否则 就看看当前 item有没有children 有继续循环 并且如果有返回值result
就把当前 item(有children这一级的 item(父级)) 返回值result 当子级 组成树结构
*/
function filterTreeData(data, searchObj) {
let result = [];
data.forEach(item=>{
let match = true;
for (let key in searchObj) {
if (item[key] !== searchObj[key]) {
match = false;
break;
}
}
if (match) {
result.push(item);
} else if (item.children && item.children.length > 0) {
let redata = filterTreeData(item.children, searchObj);
if(redata&&redata.length){
let obj = {
...item,
children: redata,
}
result.push(obj)
}
}
})
return result;
}
filterTreeData(treeData,searchObj)