Jak filtrować tablicę obiektów javascript ze zmiennymi parametrami

Chcę wybrać obiekty na podstawie właściwości obiektów, ale nie zawsze tych samych właściwości. Innymi słowy:

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

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

Ale czasami po prostu chcę filtrować nazwę, na przykład:

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

Chcę to uogólnić, aby lista parametrów mogła zostać przekazana do funkcji. Wymyśliłem, co następuje, ale jest powolny i zastanawiam się, czy jest lepszy sposób:

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

Wtedy możesz to nazwać:filterParams(arr, {name: "nick", age21: 1});

lub z:filterParams(arr, {name: "nick"});

i to zadziała w obu kierunkach.

Jeśli zastanawiasz się, robię to, ponieważ mam różne zestawy danych, które chcę uruchamiać przez tę samą procedurę, więc właściwości filtrujące muszą być uogólnione, aby móc filtrować właściwości specyficzne dla każdego zestawu danych.

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion