@kikosko

Как реализовать мультифильтр по данным в таблице?

Набор тестовых данных:
const data = [
{type: "TYPE1", name: "someName1", scope: "scope1", source: "someSource1", additionalType: "ADDITIONAL_TYPE1"},
{type: "TYPE2", name: "someName2", scope: "scope2", source: "someSource2", additionalType: "ADDITIONAL_TYPE2"},
{type: "TYPE3", name: "someName3", scope: "scope3", source: "someSource3", additionalType: "ADDITIONAL_TYPE3"},
];

Объект фильтров который создаю динамически:
const filters = {
type: [ "TYPE1" ], // фильтр по селекту из списка
name: "someName1",  // фильтр по текстовому полю
scope: [ "scope1", "scope2", "scope3" ], // фильтр по селекту из списка
source: "someSource1", // фильтр по текстовому полю
additionalType: ["ADDITIONAL_TYPE1", "ADDITIONAL_TYPE2", "ADDITIONAL_TYPE3" ]  // фильтр по селекту из списка
}


Как из заданных фильтров получить подходящий элемент из массива data?
[{type: "TYPE1", name: "someName1", scope: "scope1", source: "someSource1", additionalType: "ADDITIONAL_TYPE1"}]
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.entries(filters).reduce((items, [ k, v ]) => {
  return items.filter(Array.isArray(v)
    ? item => v.includes(item[k])
    : item => v === item[k]
  );
}, data)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽