169 похожих чатов

Как лучше реализовать работу такого фильтра? То есть, из редакса

приходит массив, он проходит через функцию которая возвращает отфильтрованный массив. Но как саму функцию-фильтрации реализовать, я чёто кроме if else пока ничего не придумал

35 ответов

2 просмотра

1) Делаешь массив проверок, по функции на каждый заполненный фильтр 2) data.filter(item => conditions.every(fn => fn(item)))

Aleksandr-Sarkisov Автор вопроса

Блин. Я чёто не понял

(() => { 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; } }

Aleksandr-Sarkisov Автор вопроса

Спасибо

@quopiks

Модифицируй под фильтр «all» на нужных полях

(С)

Aleksandr-Sarkisov Автор вопроса

TypeError: guardCreatorByFilterName[name] is not a function

Я бы короче, как-нибудь так закомбинировал бы

Aleksandr-Sarkisov Автор вопроса

Спасибо, сейчас попробую

А, минутку

При таком случае у нас два объекта должно быть в массиве, или один?

Aleksandr-Sarkisov Автор вопроса

Сколько угодно может быть, если они прошли фильтрацию

Тогда, вероятно, должно быть вот так const hasEnabledOption = (key, source) => (option) => source[key][option[key]]; const anyPass = (...fns) => (value) => fns.some((fn) => fn(value)); const hasEnabledOptions = anyPass( hasEnabledOption("smth", props), hasEnabledOption("other", props) );

Aleksandr-Sarkisov Автор вопроса

Так оно возвращает массив с новыми объектами?

Почему с новыми? С теми же Только массив новый возвращает, а не мутирует старый

Aleksandr-Sarkisov Автор вопроса

TypeError: Cannot read property 'undefined' of undefined

Покажите как используете

Финальный босс жс)

Aleksandr-Sarkisov Автор вопроса

Секунду, залью куда-то

😁😁😁

Да не надо Просто скрин покажите

Aleksandr-Sarkisov Автор вопроса

Там просто много текста, в скрин не помещается

Aleksandr-Sarkisov Автор вопроса

https://stackblitz.com/edit/react-8d7kud?file=src/App.js

Кажется, что вы решили не разбираться в коде, который я прислал Обратите внимание на эти ключи

Мы же абстрактное решение даём, ты под себя его подстраивай, а не ctrl +c ctrl+v

Aleksandr-Sarkisov Автор вопроса

Да, извиняюсь. просто уже замучался этой фильтрацией

Заработало?

Aleksandr-Sarkisov Автор вопроса

Ну ошибки нет

Вот так вот, ни здрастье, ни до свиданья)

Aleksandr-Sarkisov Автор вопроса

та я тестирую просто

Это правильно)

Aleksandr-Sarkisov Автор вопроса

Ну, всё работает. Спасибо большое. А то я уже пол дня сижу и ничего даже в голову не приходит

На здоровье Разберитесь с кодом, который прислал вам я и @THIS_IS_YOUR_NICKNAME. Станете лучше как программист) Ну и общий совет - не пытайтесь сделать сразу всё решение сразу. Дробите решение задачи на части.

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

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Any electron dev here?
Sayanth Tezro
12
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Карта сайта