0

オブジェクトの配列をフィルタリングしようとしています。ただし、フィルタリングするオブジェクトのプロパティは、他の場所で変数として定義されており、ドット表記構文を100%構築する方法ではありません。

だから私はこのような配列オブジェクトを持っています

var listings = [
    {"id" : "1", "name":"a name", "surname" : "a surname"},
    {"id" : "2", "name":"b name", "surname" : "b surname"},
    {"id" : "3", "name":"c name", "surname" : "c surname"}
]

フィルタリングするオブジェクトのプロパティを指定する変数があります。この変数は常にnameに設定されているわけではありません。上記の例では、id、name、またはsurnameにある可能性があります。

var filter = 'id'

探すフィルター値の変数

var filterVal = '2'

次に、このgrep呼び出しがあります。

listings = $.grep(listings, function (obj, index) {
return  obj.id === filterVal;
});

しかし、obj.idをハードコーディングする代わりに、次のようなものが必要です。

obj."value of filter variable" === filterVal

前もって感謝します

ベン

4

1 に答える 1

9

ドット表記の代わりに角括弧表記を使用できます。

var idKey = "name";
$.grep(listings, function (obj) {
    return obj[idKey] === filterVal;
});
于 2012-08-16T13:12:19.243 に答える