用js实现模糊查询 您所在的位置:网站首页 模糊查询的函数 用js实现模糊查询

用js实现模糊查询

2023-07-30 06:53| 来源: 网络整理| 查看: 265

4种方法

测试数据:

var list1 = [ { name: "bbAhhhaia", other: "akka" }, { name: "哈哈ad", other: "cai" }, { name: "js", other: "aa" } ] fuzzyQuery(list1, "a"); 1 indexOf

从头到尾地检索字符串 item.name,看它是否含有子串 keyWord。 如果找到一个 keyWord,则返回 keyWord 的第一次出现的位置。如果没有找到,将返回 -1。

/** * @param {Array} list 进行查询的数组 * @param {String} keyWord 查询的关键词 * @return {Array} arr 查询的结果 */ function fuzzyQuery(list, keyWord) { var arr = list.filter(item => { return item.name.indexOf(keyWord) >= 0 }); return arr } 2 split

通过 keyWord 将 item.name 分割成子串并返回子串数组。返回的数组中的字串不包括 item.name 自身。 如果 item.name 中不存在 keyWord,将返回一个只包含 item.name 的数组。 故可以根据返回数组的长度来判断是否存在子字符串 keyWord

function fuzzyQuery(list, keyWord) { var arr = list.filter(item => { return item.name.split(keyWord).length > 1 }); return arr } 3 正则表达式test function fuzzyQuery(list, keyWord) { var arr = list.filter(item => { var reg = new RegExp(keyWord, "gi"); return reg.test(item.name) }); return arr } 4 正则表达式match function fuzzyQuery(list, keyWord) { var arr = list.filter(item => { var reg = new RegExp(keyWord, "gi"); return item.name.match(reg) }); return arr } 总结

match性能最差, test功能会比较强大,代码也更加简洁。比如:忽略大小写



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有