版权声明:本文为博主原创文章,未经博主允许不得转载。 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 ));