So filtern Sie ein JavaScript-Objektarray mit variablen Parametern

Ich möchte die Objekte basierend auf den Eigenschaften der Objekte auswählen, aber nicht immer dieselben Eigenschaften. Mit anderen Worten:

arr = [
    { name: "joe",   age21: 1 },
    { name: "nick",  age21: 0 },
    { name: "blast", age21: 1 }
];

arr.filter(function(item) {
    return (item.name === "nick" && item.age21 === 1);
});

Aber manchmal möchte ich nur nach Namen filtern, zum Beispiel:

arr.filter(function(item) {
    return (item.name === "nick");
});

Ich möchte dies verallgemeinern, damit die Liste der Parameter an die Funktion übergeben werden kann. Ich habe mir Folgendes ausgedacht, aber es ist langsam und ich frage mich, ob es einen besseren Weg gibt:

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

Dann könnte man es nennen mit:filterParams(arr, {name: "nick", age21: 1});

oder mit:filterParams(arr, {name: "nick"});

und es würde so oder so funktionieren.

Falls Sie sich fragen, mache ich das, weil ich verschiedene Datensätze habe, die ich über dieselbe Routine ausführen möchte. Daher müssen die Filtereigenschaften verallgemeinert werden, damit ich nach Eigenschaften filtern kann, die für jedes Dataset spezifisch sind.

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage