// 根据名称过滤树数据
filterTreeByNames(names, treeData) {
// 检查是否有子节点的 label 匹配名称数组中的任意一个名称
function hasChildWithName(children, names) {
if (!children) {
return false;
}
for (const child of children) {
if (names.some((name) => child.label.includes(name))) {
return true;
}
if (hasChildWithName(child.children, names)) {
return true;
}
}
return false;
}
return treeData
.map((item) => {
// 检查当前节点或其子节点是否匹配名称数组中的任意一个名称
if (
names.some((name) => item.label.includes(name)) ||
hasChildWithName(item.children, names)
) {
// 递归过滤子节点
item.children = this.filterTreeByNames(names, item.children || []);
return item;
}
return null;
})
.filter((item) => item !== null);
},
09-30
1201
11-28
1344
07-08