Javascript 在jQuery中使用grep编写通用过滤器
有没有一种方法可以使下面的代码更加通用Javascript 在jQuery中使用grep编写通用过滤器,javascript,jquery,Javascript,Jquery,有没有一种方法可以使下面的代码更加通用 var result = $.grep(myObjectArray, function(e){ return e.Prop1 == 'SomeVal'; }); 这就是我想做的 一个通用函数,它将接受myObjectArray(要筛选的对象数组)、Prop1(属性名)和SomeVal(要筛选的值)作为参数 我面临的问题是,我不知道如何在对象中找到PropertyName,因为它可以是任何东西 任何帮助都将不胜感激。要从对象获取属性,只需使用
var result = $.grep(myObjectArray, function(e){
return e.Prop1 == 'SomeVal';
});
这就是我想做的
一个通用函数,它将接受myObjectArray
(要筛选的对象数组)、Prop1
(属性名)和SomeVal
(要筛选的值)作为参数
我面临的问题是,我不知道如何在对象中找到PropertyName,因为它可以是任何东西
任何帮助都将不胜感激。要从对象获取属性,只需使用
myObject[Prop1]
要确定对象是否具有属性,请使用
myObject.hasOwnProperty(Prop1)
请注意使用方括号语法访问对象属性。它可以像这样是通用的吗
function filterArray(inputArray,customFunction){
return $.grep(inputArray, function(e){ return customFunction(e); });
}
其中,customFunction
可以是用户定义的函数,用于将对象限定为选定对象
例如:
var sampleArray = [{name:"Ahamed",age: 21},
{name:"AhamedX",age: 21},
{name:"Babu",age: 25},
{name:"Mustafa",age: 27} ];
function nameComparator(obj){
return obj["name"]=="Ahamed";
}
function ageFilter(obj){
return obj["age"]>=25;
}
var filteredArray=filterArray(sampleArray,nameComparator);
alert(filteredArray.length);
var filteredArray=filterArray(sampleArray,ageFilter);
alert(filteredArray.length);
小提琴链接:
var sampleArray = [{name:"Ahamed",age: 21},
{name:"AhamedX",age: 21},
{name:"Babu",age: 25},
{name:"Mustafa",age: 27} ];
function nameComparator(obj){
return obj["name"]=="Ahamed";
}
function ageFilter(obj){
return obj["age"]>=25;
}
var filteredArray=filterArray(sampleArray,nameComparator);
alert(filteredArray.length);
var filteredArray=filterArray(sampleArray,ageFilter);
alert(filteredArray.length);