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

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

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

35 ответов

12 просмотров

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. Станете лучше как программист) Ну и общий совет - не пытайтесь сделать сразу всё решение сразу. Дробите решение задачи на части.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта