1、前端实现模糊搜索功能
/**
* 模糊搜索功能
* params{keyWords} 需要匹配的关键字
* params{list} 需要过滤的数据源
* params{label} 当数组是json对象时,需要过滤的字段
* return 匹配到的所有数据的数组
*/
function Search(list, label, keyWords) {
if (keyWords === null) {
keyWords = label;
label = null;
}
var arr = [];
var reg = new RegExp(keyWords);
var flag;
for (var i = 0, len = list.length;i < len;i++) {
flag = label ? list[i][label].match(reg) : list[i].match(reg);
if (flag) {
arr.push(list[i]);
}
}
return arr;
}
上面的代码实现了前端的模糊搜索功能,当数据量不是特别大时候,前端的这种方案是比较好的,如果后台搜索的话,每次都http请求很消耗性能
如果是前端实现则非常快。
if (keyWords === null) {
keyWords = label;
label = null;
}
这段代码借鉴了Jquery里面的参数修正功能,个人感觉非常好用,因为参数少,不需要将参数写成对象的形式,但是有的时候有的参数又是不必须的,如果不加
参数校验会导致代码报错,同事也可以做一参数的判断,但是个人感觉还是这种参数修正的方法比较好
var reg = new RegExp(keyWords);
flag = label ? list[i][label].match(reg) : list[i].match(reg);
这里面用到了jquery 的match方法,match 是专门用来检验正则对象的,这来面如果不是很了解,可以多看看jquery的api文档,了解一下用法
上面就是前端实现模糊搜索功能的代码分享,当然实现的方式有很多种,这是其中一种方法,用indexOf()也可以实现模糊搜索功能
浙公网安备 33010602011771号