1) Делаешь массив проверок, по функции на каждый заполненный фильтр 2) data.filter(item => conditions.every(fn => fn(item)))
Блин. Я чёто не понял
(() => { const values = [1, 0, 228]; const conds = [item => item > 0, item => item < 100]; retun values.filter(value => conds.every(cond => cond(value))); })()
omg. const getFilteredData = (originalData, filtersState) => originalData.filter(createFiltersStateGuard(filtersState)); const createFiltersStateGuard = filtersState => { const filtersEntries = Object.entries(filtersState); const filtersGuards = filtersEntries.map(([name, value]) => guardCreatorByFilterName[name](value) ); return item => filtersGuards.every(guard => guard(item)); }; const guardCreatorByFilterName = { deliveryStatus: statuses => item => statuses.includes(item.deliveryStatus), paymentStatus: statuses => item => statuses.includes(item.paymentStatus), creationDate: date => { const dateAsTimestamp = date.getTime(); return item => item.creationDate.getTime() === dateAsTimestamp; } }
Спасибо
@quopiks
Модифицируй под фильтр «all» на нужных полях
(С)
TypeError: guardCreatorByFilterName[name] is not a function
Спасибо, сейчас попробую
А, минутку
Сколько угодно может быть, если они прошли фильтрацию
Так оно возвращает массив с новыми объектами?
Почему с новыми? С теми же Только массив новый возвращает, а не мутирует старый
TypeError: Cannot read property 'undefined' of undefined
Покажите как используете
Финальный босс жс)
Секунду, залью куда-то
😁😁😁
Да не надо Просто скрин покажите
Там просто много текста, в скрин не помещается
https://stackblitz.com/edit/react-8d7kud?file=src/App.js
Мы же абстрактное решение даём, ты под себя его подстраивай, а не ctrl +c ctrl+v
Да, извиняюсь. просто уже замучался этой фильтрацией
Заработало?
Ну ошибки нет
Вот так вот, ни здрастье, ни до свиданья)
та я тестирую просто
Это правильно)
Ну, всё работает. Спасибо большое. А то я уже пол дня сижу и ничего даже в голову не приходит
На здоровье Разберитесь с кодом, который прислал вам я и @THIS_IS_YOUR_NICKNAME. Станете лучше как программист) Ну и общий совет - не пытайтесь сделать сразу всё решение сразу. Дробите решение задачи на части.
Обсуждают сегодня