0

次のコードをより一般的に書く方法はありますか?

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

    return e.Prop1 == 'SomeVal';

});

これが私がやりたいことです。

myObjectArray(フィルターするオブジェクト配列)、Prop1(プロパティ名)、およびSomeVal(フィルターする値) を引数として受け入れる汎用関数。

私が直面している問題は、オブジェクトで 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);  });
}

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

フィドルリンク: http://jsfiddle.net/MAq6c/

于 2012-06-26T14:55:08.827 に答える