🌺前言
js实现树的过滤
javascript
/**
* 过滤树节点
* @param {array} nodes 树列表
* @param {string} target 关键字
* @param {string} key 节点的那个字段进行过滤
* @returns
*/
export default function filterTreeNode (nodes, target, key = 'label') {
if (!target) return nodes
// 条件就是节点的title过滤关键字
function predicate (node) {
var text = node[key]
if (text.indexOf(target) > -1) {
return true
} else {
return false
}
}
if (!(nodes && nodes.length)) {
return []
}
var newChildren = []
for (var i = 0; i < nodes.length; i++) {
var subs = filterTreeNode(nodes[i].children, target, key)
if (predicate(nodes[i])) {
newChildren.push(nodes[i])
nodes[i].children = filterTreeNode(nodes[i].children, target, key)
} else if (subs && subs.length) {
nodes[i].children = subs
newChildren.push(nodes[i])
}
}
return newChildren.length ? newChildren : []
}
文章最后更新于 2024-08-20 16:20:33
作者:徐徐版权声明:转载请注明文章出处
留言

~~空空如也