Вы можете получить записи filters
для наличия итеративного набора данных и фильтрации data
, проверив каждый ключ записей со значением.
В результате вы получите только объект, который соответствует все свойства filter
.
Для этого подхода требуются одинаковые имена свойств для filter
и data
.
И подхода с Array#every
Все искомые свойства должны совпадать.
var filters = { location: ['Swiss cottage', 'Fulham'], ages: ['Giga'] },
data = [{ location: "Swiss cottage", ages: "Giga" }, { location: "Fulham", ages: "Kilo" }, { location: "Putney", ages: "Micro" }],
entries = Object.entries(filters),
result = data.filter(o => entries.every(([k, v]) => v.includes(o[k])));
console.log(result);
ИЛИ подход с Array#some
Одно искомое свойство должно совпадать.
var filters = { location: ['Swiss cottage', 'Fulham'], ages: ['Giga'] },
data = [{ location: "Swiss cottage", ages: "Giga" }, { location: "Fulham", ages: "Kilo" }, { location: "Putney", ages: "Micro" }],
entries = Object.entries(filters),
result = data.filter(o => entries.some(([k, v]) => v.includes(o[k])));
console.log(result);