Как отфильтровать массив объектов JavaScript с переменными параметрами

Я хочу выбирать объекты на основе свойств объектов, но не всегда одинаковых свойств. Другими словами:

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

и это будет работать в любом случае.

Если вам интересно, я делаю это, потому что у меня есть разные наборы данных, которые я хочу выполнить через одну и ту же подпрограмму, поэтому свойства фильтра необходимо обобщить, чтобы я мог фильтровать свойства, специфичные для каждого набора данных.

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос