树形数据的过滤:返回包含所需的要素以及其父节点。
filterTree(treeData, filterValues) {
function filterRecursive(node, parentIncluded) {
// 如果节点是数组,则对每个元素应用过滤逻辑
if (Array.isArray(node)) {
const filteredArray = node.map((child) => filterRecursive(child, parentIncluded))
return filteredArray.filter((child) => child !== null)
}
// 检查当前节点的值是否包含任何过滤值
const valueContainsFilter = filterValues.some((filter) => node.value.indexOf(filter) !== -1)
const includeNode = parentIncluded || valueContainsFilter
const filteredChildren = node.children ? filterRecursive(node.children, includeNode) : []
return includeNode || filteredChildren.length > 0 ? { ...node, children: filteredChildren } : null
}
const filteredTree = filterRecursive(treeData, false)
const cleanFilteredTree = JSON.parse(JSON.stringify(filteredTree))
return cleanFilteredTree
},
filterValues是一个数组,包含过滤的要素。
const valueContainsFilter = filterValues.some((filter) => node.value.indexOf(filter)
这里可以根据你需要的条件进行修改。