const arrayFilter = (arr, rules) => arr.filter(el => Object.keys(rules).some(key => rules[key](el[key])));
const rules = {
firstName: v => v.toLowerCase().includes('joh'),
lastName: v => v.toLowerCase().includes('den'),
};
console.log(arrayFilter(arr, rules));

Вариант
const rules = {
firstName: v => /joh/i.test(v),
lastName: v => /den/i.test(v),
};