Найти тему
Работяги

map, filter, reduce - три всадника функционального апокалипсиса в JS. Часть 1 - map

                                          Вот они - слева направо - map, filter и reduce))
Вот они - слева направо - map, filter и reduce))

Привет, я Дмитрий Канаев, Backend NodeJS разработчик, представляю IT сообщество Работяги. В этом сообществе ты можешь поделиться своими проблемами в разработке и найти ответы на интересующие тебя вопросы из сферы IT. Ссылки на наши другие ресурсы вы можете найти в профиле нашего канала или в конце этой статьи.

Сегодня мы начнем цикл статей, в которых рассмотрим три важных функциональных «столпа» в JavaScript. И первой на очереди будет функция map.

Предположим, что нам требуется преобразовать все элементы крупной коллекции данных. Пусть у нас имеется список объектов и из него необходимо извлечь значение поля field для каждого объекта. Для решения подобных задач в процедурном подходе можно использовать следующую последовательность операторов:

-2

Операция map реализуется в виде функции высшего порядка, применяющей функцию-итератор для перебора каждого элемента коллекции по очереди и возвращающей новую коллекцию равной длины с исходной, с результатом применения функции-итератора к каждому значению исходной коллекции. Ниже приведено решение той же самой задачи, но на этот раз – в функциональном стиле с помощью операции map:

-3

Формальное определение данной операции выглядит следующим образом:

-4

Операция map особенно удобна для синтаксического анализа целых коллекций элементов, не прибегая к необходимости организовывать цикл или решать затруднения, связанные с нетипичным определением области видимости. Кроме того, данная операция является иммутабельной, поскольку результатом ее выполнения является совершенно новый массив. Операции map передается в качестве параметра функция f и коллекция элементов n. В результате возвращается новый массив длиной n, элементы которого получаются в результате применения функции f к каждому элементу коллекции слева направо.

Рассмотрим подробнее внутреннюю реализацию операции map, для того чтобы понять, что скрывается за ней:

-5

Как видим, ничего сложного в устройстве функции map – нет, и мы можем самостоятельно реализовать ее для работы с различными структурами данных, например с парами ключ-значение у объектов, а не только с коллекциями 😊

Ссылки на наши ресурсы – ниже:

https://discord.gg/dWMKzXyG

https://t.me/podcust_rabot9g

https://www.youtube.com/@Rabot9gi

https://vk.com/club224443714