0

有没有办法我可以编写以下代码更通用?

var result = $.grep(myObjectArray, function(e){ 

    return e.Prop1 == 'SomeVal';

});

这就是我想做的。

一个通用函数,将接受myObjectArray(Object Array to filter)、Prop1(Property name) 和SomeVal(Value to filter) 作为参数。

我面临的问题是我不知道如何在对象中找到 PropertyName,因为它可以是任何东西。

任何帮助将不胜感激。

4

3 回答 3

1

要从对象中获取属性,只需使用

myObject[Prop1]

要确定对象是否具有属性,请使用

myObject.hasOwnProperty(Prop1)
于 2012-06-26T14:39:10.130 回答
1
function filterObjectArray(myObjectArray, prop1, someVal) {
    return $.grep(myObjectArray, function (e) {
        return e[prop1] === someVal;
    };
}

注意对象属性访问使用方括号语法。

于 2012-06-26T14:39:25.500 回答
0

它可以像这样通用吗?

function filterArray(inputArray,customFunction){
 return $.grep(inputArray, function(e){       return customFunction(e);  });
}

wherecustomFunction可以是用户定义的函数来限定对象为选中状态

例子 :

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);

小提琴链接:http: //jsfiddle.net/MAq6c/

于 2012-06-26T14:55:08.827 回答