@vadimparinov

Как сделать фильтрацию массива с объектами по нескольким критериям одновременно?

Добрый день!
Есть массив с активными фильтрами вида ["free","expert"]
И есть массив с объектами(см ниже), мне нужно найти все объекты в этом массиве у которых фильтры(которые выше в массиве) в положении true. Сейчас получилось находить только по одному фильтру, a нужно чтобы у объекта все фильтры были активны
Пример объектами
{
      id: 5,
      title: 'Test',
      course: true,
      profession: false,
      free: true,
      paid: false,
      beginners: false,
      expert: true
    }

Сейчас вот так код выглядит
useEffect(() => {
    const newArray = [];
    initialState.map((course) => {
      return checked.map((check) => {
        if (course[check]) {
          newArray.push(course);
        }
      });
    });
    if (newArray.length === 0) {
      setData(initialState);
    } else {
      console.log(newArray);
      setData(newArray);
    }
  }, [checked]);
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
useEffect(() => {
  const newArray = initialState.filter(n => checked.every(m => n[m]));
  setData(newArray.length ? newArray : initialState);
}, [ checked ]);

https://jsfiddle.net/uqbckxtr/1/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы