搜索的的原理代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31561851/article/details/58070335

//假定一个在后台获取的数据
var ArrayData = [
    {'id':'A01','Title':'john'},
    {'id':'A02','Title':'rf5643'},
    {'id':'A03','Title':'5634'},
    {'id':'A04','Title':'3'},
    {'id':'A05','Title':'2'}
];


//获取匹配  方法1  使用indexOf()方法
function matchingDataOne(data,pattern){
    var john = $.grep(data, function (item) {
        return item.Title.indexOf("5") > -1 ;
    });
    return john;
}

方法1 是使用的indexOf来匹配的:
当匹配成功的时候 item.Title.indexOf("5) > -1
当匹配不成功的时候 item.Title.indexOf("5) = -1
//获取匹配  方法2:使用正则表达式
function matchingDataTwo(data){
    var john = $.grep(data, function (item) {
        var patternKey = new RegExp("5","gi");
        return patternKey.test(item["Title"]);
    });
    return john;
}

方法2 是使用的正则表达式来匹配的:
正则在每次循环的时候要新建一个:var pattern = new RegExp("5" ,"gi");
进行匹配pattern.test(item["Title"]);如果成功就返回,否则不返回! 
这里要说明的是正则中的g,也就是全局匹配的意思,必须每次遍历
都要新建,否则匹配的不完整。
或者正在在全局中声明,要把g去掉;比如下面代码
var patternKey = new RegExp("5","i");
function matchingDataTwo(data,pattern){
    var john = $.grep(data, function (item) {
        return pattern.test(item["Title"]);
    });
    return john;
}
console.log(matchingDataTwo(ArrayData ,patternKey));


//输出两种方法的结果  这种结果相同
console.log(matchingDataOne(ArrayData ));
console.log(matchingDataTwo(ArrayData ));

猜你喜欢

转载自blog.csdn.net/qq_31561851/article/details/58070335