代码如下:
/**
* 递归tree关键词搜索
*
* @param {key} 需要递归的key名
* @param {keyword} 需要搜索查询的关键字
* @param {treeList} 遍历tree列表
* @param {first} 是否是首次传入,默认true
*/
function filterTree (key, keyword, treeList, first = true) {
// 首次传入深度克隆数据防止修改源数据
if (first) {
treeList = JSON.parse(JSON.stringify(treeList))
}
let TreList = [];
treeList.forEach(item => {
if (item[key].includes(keyword)) {
TreList.push(item);
} else if (item.children && Array.isArray(item.children) && item.children.length > 0) {
item.children = this.filterTree(key, keyword, item.children, false);
if (item.children.length) {
TreList.push(item);
}
}
})
return TreList;
},