起因:项目中需要前端过滤树结构,element库的树结构过滤出来只有当前搜索的这一层节点数据。项目要求要带出过滤出来的节点及其父级和所有子级节点数据
const filterRouter = (arr, str) => {
//判断当前节点是否符合条件
const predicate = (item) =>
item.name && item.name.toUpperCase().includes(str.toUpperCase())
if (!(arr && arr.length)) return []
const newChildren: any[] = []
arr.forEach((item) => {
if (predicate(item)) {
newChildren.push(item)
} else {
const subs = filterRouter(item.children, str)
if (subs && subs.length) {
const obj = { ...item, children: subs }
newChildren.push(obj)
}
}
})
return newChildren.length ? newChildren : []
}