オブジェクトのプロパティに基づいてオブジェクトを選択したいのですが、必ずしも同じプロパティではありません。言い換えると:
arr = [
{ name: "joe", age21: 1 },
{ name: "nick", age21: 0 },
{ name: "blast", age21: 1 }
];
arr.filter(function(item) {
return (item.name === "nick" && item.age21 === 1);
});
しかし、たとえば名前でフィルタリングしたい場合もあります。
arr.filter(function(item) {
return (item.name === "nick");
});
私がやりたいのは、これを一般化して、パラメーターのリストを関数に渡すことができるようにすることです。私は次のことを思いつきましたが、遅いので、より良い方法があるかどうか疑問に思っています:
filterParams = function(arr, params) {
var new_array = arr.filter(function(item) {
var select = 1
for(obj in params) { //create the filter criteria based on varying set of parameters
var select = select && params[obj] === item[obj];
}
return select;
});
return new_array;
}
次に、次のように呼び出すことができます。
filterParams(arr, {name: "nick", age21: 1});
または:
filterParams(arr, {name: "nick"});
どちらの方法でも機能します。
ご参考までに、同じルーチンで実行したいさまざまなデータ セットがあるため、これを行っているので、各データセットに固有のプロパティでフィルター処理できるように、フィルター プロパティを一般化する必要があります。
ありがとう!