js过滤树节点

js过滤树节点

徐徐
算法
发布于2024-08-20 16:17:49
🌺前言
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
留言
暂无数据

~~空空如也