前端实现树形结构模糊搜索

本文介绍了两种FuzzySearchTree的方法,一种是当父节点含有搜索内容时,会递归查询子节点;另一种则是直接返回父节点及其所有子节点,无需进一步搜索。这两种策略适用于处理含有模糊匹配需求的数据结构查询。
摘要由CSDN通过智能技术生成

方式一:父节点含有搜索内容,则需向下继续搜索,返回含有搜索内容的子节点


fuzzySearchTree = (tree, searchValue) => {
    const resTree = [];
    (tree || []).forEach(node => {
        if (node.name.indexOf(searchValue) > -1) { // 父节点 包含搜索字符串
            let arr = [];
            if (node.children && node.children.length > 0) {
                arr = this.fuzzySearchTree(node.children, searchValue); // 再递归查询子节点是否含有搜索字符串
            }
            resTree.push({...node, children: arr});
        } else { // 父节点 不包含搜索字符串;则还需向下检查子节点是否含有搜索字符串;
            if (node.children && node.children.length > 0) {
                const arr = this.fuzzySearchTree(node.children, searchValue);
                if (arr && arr.length > 0) {
                    resTree.push({...node, children: arr});
                }
            }
        }
    });
    return resTree;
}

方式二:父节点含有搜索内容,无需向下继续搜索,直接返回改节点及下面所有子节点

fuzzySearchTree = (tree, searchValue) => {
   const resTree = [];
    (tree || []).forEach(node => {
        if (node.name.indexOf(searchValue) > -1) { // 父节点 包含搜索字符串,直接将父节点及以下的子节点都返回
            resTree.push({...node});
        } else { // 父节点 不包含搜索字符串;则还需向下检查子节点是否含有搜索字符串;
            if (node.children && node.children.length > 0) {
                const arr = this.fuzzySearchTree(node.children, searchValue);
                if (arr && arr.length > 0) {
                    resTree.push({...node, children: arr});
                }
            }
        }
    });
    return resTree;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值