May 27, 2021

Array.map() в JavaScript

Итак, ты начал изучать метод map массива и хочешь узнать, как он работает на самом деле?

Сегодня для тебя я подготовил три примера и дополнительный бонусный пример, который поможет тебе понять, как можно переписать map.

Давай начнем!

Параметры метода map

Прежде всего, давай посмотрим, что принимает метод map. Из документации MDN мы можем увидеть следующее:

Метод map принимает функцию, которой метод должен обработать каждый элемент массива. То есть каждый элемент массива, у которого был вызван метод map, передастся в функцию, а полученный из функции результат будет собран в другой массив и будет выдан в качестве результата.
Функция, которая передается в метод map имеет первый параметр element, который будет принимать элементы нашего массива, второй параметр index, который представлять индекс текущего элемента и, наконец, параметр array, который содержит весь массив, у которого был вызван метод.

Оригинальный пример

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

Идея псевдокода

Идея map заключается в том, что для каждого значения x возвращается значение f(x), где f() - наша функция отображения. Давай начнем с альтернативного варианта:

Альтернативный вариант!

Итак, для первой альтернативы мы можем использовать цикл for ... in, чтобы перебрать все элементы массива и использовать функцию инкремента для возврата увеличенного значения.

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

Альтернатива вторая!

Если ты считаешь, что пять строк для альтернативной map - это слишком много, у меня есть для тебя другое решение, на этот раз с использованием forEach. Давай посмотрим:

В данном случае с помощью всего трех строк мы создали полностью рабочую альтернативную map! Но мы можем сделать и больше. Может быть, в одну строку?

Альтернатива третья!

Это самая крутая альтернатива. С помощью reduce мы можем создать волшебно красивую map, используя всего одну строчку кода:

Как ты видел, существует множество возможностей, если ты хочешь создать свои собственные пользовательские функции, исходя из потребностей, ты можешь выбрать ту, которая подходит лучше всего!

Бонусная альтернатива: Асинхронный map

Иногда возникает необходимость отобразить данные через результат асинхронной функции, так как же можно реализовать пользовательскую версию map, предоставляющую такую возможность?

Эта функция использует ту же функцию отображения, что и другие, с той лишь разницей, что отображение каждого элемента ждет секунду, прежде чем перейти к следующему.

Заключение

Итак, сегодня немного попрактиковались в создании функцию map полностью с нуля, а также реализовали асинхронную map.

Какой вариант показался тебе наиболее полезным? Дай мне знать в комментариях!

Источник: https://dev.to/itsrennyman/deep-dive-into-javascript-array-map-5b2f