JS多种方式实现模糊查询
通常一些轻量级的数据,在前端进行过滤,会减少与后端交互,减少ajax请求。
1. indexof 方法
语法:stringObject.indexOf(searchvalue,fromindex)
参数:searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是0到stringObject.length - 1。 如省略该参数,则将从字符串的首字符开始检索。
说明: 该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。如果没有找到,将返回 -1。
/**
* 使用indexof方法实现模糊查询
* @param {Array} list 进行查询的数组
* @param {String} keyWord 查询的关键词
* @return {Array} 查询的结果
*/
function listQuery(list, keyWord) {
return list.filter(v=>v.indexOf(keyWord) != -1)
}
2. split 方法
/**
* 使用spilt方法实现模糊查询
* @param {Array} list 进行查询的数组
* @param {String} keyWord 查询的关键词
* @return {Array} 查询的结果
*/
function listQuery(list, keyWord) {
return list.filter(v=>v.split(keyWord).length >0)
}
3. match 方法
/**
* 使用match方法实现模糊查询
* @param {Array} list 进行查询的数组
* @param {String} keyWord 查询的关键词
* @return {Array} 查询的结果
*/
function listQuery(list, keyWord) {
return list.filter(v=v.match(keyWord) != null)
}
4. test方法(正则匹配)
/**
* 使用test方法实现模糊查询
* @param {Array} list 原数组
* @param {String} keyWord 查询的关键词
* @return {Array} 查询的结果
*/
function listQuery(list, keyWord) {
let reg = new RegExp(keyWord);
return list.filter(v=>reg.test(v))
}
具体indexof,split,match,test方法的用法可以去参考官网查看学习,这里不做详解了www.w3school.com.cn/jsref/jsref…
总结:以上四种方法,除了match方法性能最差,其他三个方法在性能上差不多。不过test使用正则较灵活,推荐使用。
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。