Использование map, reduce и filter
Не все является объектом. Когда дело доходит до функционального программирования, это больше связано с процессами, которые доставляют вас из точки А в точку Б, чем с тем, как структурированы данные и группы бизнес-логики.
JavaScript — это язык, который склонен к императивным шаблонам из-за того, как легко его подобрать. Многие разработчики, как правило, пишут свой код процедурным образом, когда одна ошибка в процедуре может нарушить код или создать побочные ошибки. Вот тут-то и появляются функциональные паттерны.
Краткое описание функционального программирования
Много вонючего кода JavaScript написано в императивном или процедурном шаблоне. Это код, написанный таким образом, чтобы представлять поток мыслей, в результате чего возникает ряд зависимостей для работы цепочки.
Взгляните на приведенную ниже процедурную модель:
- Проверьте состояние питания компьютера, если включено, перейдите к следующему шагу. В противном случае продолжайте включать компьютер.
- Введите пароль. Если пароль принят, продолжайте. Попробуй еще раз.
- Откройте браузер.
- Откройте Интернет- браузер.
Каждый шаг в этом процессе должен быть сделан для того, чтобы наступил окончательный результат. Для некоторых обстоятельств необходим процедурный шаблон, но он не требуется для всех сценариев.
Есть некоторые сценарии, в которых порядок не имеет такого большого значения. Например, задача приготовления растворимого кофе. Не имеет значения, в каком порядке вы кладете сахар и кофейный порошок — главное, чтобы он был в кружке. Вот что такое функциональное программирование в двух словах.
В JavaScript мы часто работаем с массивами, но многие разработчики склонны использовать императивный шаблон, когда в этом нет необходимости.циклы while и for могут использоваться для фильтрации, поиска или выполнения каких-либо действий с каждым значением внутри массива.
Однако, если что-то пойдет не так, процесс не завершится или поток каким-то образом нарушится, функции, зависящие от правильных значений, также будут нарушены в качестве побочного эффекта.
filter(), find(), map(), reduce(), every() и some () — это шесть методов массива JavaScript, которые следует использовать чаще, чтобы предотвратить появление таких всплесков. Эти методы фантастичны в использовании и чтении в коде, потому что для их работы не требуется существование состояния.
Как использовать filter()?
filter () — это метод, который позволяет создавать новый массив на основе условий, которые оцениваются как true из существующего массива.
Взгляните на пример ниже:
Приведенный выше пример представляет собой процедурный шаблон, который мы часто видим в дикой природе как способ перебрать каждый элемент в массиве, проверить условие, а затем поместить его в новый массив.
С помощью метода filter() вам просто нужно установить условие. Например:
Здесь нам просто нужно настроить метод фильтра для массива. Анонимная функция позволяет a представлять один элемент в массиве таким же образом, как a = animals[i] в процедурном шаблоне. Все, что возвращается в фильтре (), помещается в новый массив.
Как использовать find()
В JavaScript функция find() используется для создания нового объекта на основе заданного вами условия. На первый взгляд это похоже на filter (), но это не одно и то же.функция filter() возвращает массив совпадающих объектов, а функция find() возвращает первый совпадающий объект.
Смотрите пример ниже:
find()остановится при первом совпадении, а функция filter() продолжит работу и вернет все совпадающие элементы в массиве.
Как использовать map()?
У вас есть массив, но вы хотите, чтобы он выглядел по-другому. Вы можете выполнить цикл с помощью функции forEach (), но это только создаст осложнения в дальнейшем. Сопоставление позволяет перемещать значения, переназначать их различным селекторам и делать с ними все, что вы хотите. Результатом map() является объект, который позволяет хранить значения пары ключей или просто массив простых значений.
Синтаксис и примеры смотрите в приведенном ниже коде:
Как использовать reduce()?
Время от времени мы слышим о сокращении, но никто на самом деле не говорит о том, что именно это такое. Короче говоря, reduce позволяет взаимодействовать с двумя значениями или объектами, смежными друг с другом слева направо.
Например, у вас есть следующий массив: [100, 20, 10]. Если вы используете функцию reduce (), то первый набор значений будет равен 100 и 20. Затем независимо от того, какой результат этого используется для взаимодействия с 10.
reduce() также может принимать два аргумента. Первая-это функция, которая определяет, что происходит с двумя значениями, а вторая задает начальное значение.
Как использовать every()?
Каждый возвращает значение true или false в зависимости от набора условий. Он работает аналогично функции filter (), но вместо того, чтобы возвращать объект или значение, функция every() выдает логическое значение. Это позволяет быстро проверить, все ли внутри массива соответствует критериям.
Как использовать some()?
some() работает так же, как и every (), но только по крайней мере одно из условий должно быть оценено как true.
В реальных случаях использования вы можете использовать every() и some() для проверки значений в массиве перед отправкой их в базу данных. Или, возможно, вы хотите убедиться, что в корзине есть определенная категория товара, прежде чем применять специальную скидку. Или вы кодируете систему бронирования и хотите убедиться, что каждый клиент, который может забронировать номер, соответствует минимальным возрастным требованиям.
Заключительные слова
JavaScript может быть эффективным — если вы потратите время на его правильное изучение. Разработчики, новички в JavaScript, как правило, попадают в процедурные шаблоны, потому что это легко.
Однако простое может быстро превратиться в сложную мешанину, если вы работаете с несколькими циклами for или while. Методы массива устраняют потенциальное сумасшествие, связанное с длинным кодом, вложенными скобками и потерянными точками с запятой.