Метод массива map
Автор конспекта: Арина Василевская
Метод map - это функция, которая принимает callback (некую функцию) и создает новый массив с
результатом вызова callback для каждого элемента массива.
🔗 Ссылка на документацию map
🔧 Как работает map
-
У нас есть массив элементов (барашки, люди, слова, числа).
-
Мы вызываем у массива метод
.map(callback). -
Callback-функция (функция-преобразователь) получает на вход каждый элемент массива и возвращает новый результат для данного элемента.
-
Все результаты складываются в новый массив, который
mapвозвращает.
Разберем на примерах
Барашки
🤔 Идея
-
У нас есть массив овечек (объектов).
-
Каждая овечка ➡️ превращается в клубок ниток 🧶😨
-
Сколько овечек, столько и клубков.
-
Исходный массив овечек остаётся без изменений → создаётся новый массив клубков.

⚙️ Реализация
- Для того чтобы метод
mapсделал на основе барашка соответсвующий клубок мы передаем внутрь него функцию-callback (преобразователь) - Callback работает с каждым барашком и делает из его шерсти соответствующий клубок
- После того как каждый барашек обработан,
mapотдает нам результирующий массив с клубками шерсти.
Как данная функция выглядела бы в js:
Именно то, что возвращается из callback-функции, будет очередным элементом в новом массиве. Callback вызывается столько раз, сколько элементов в массиве. И каждый раз в callback приходит другой элемент массива.
Метод - это функция, которая является свойством объекта.
Люди
🤔 Идея
-
У нас есть массив объектов (люди).
-
Нужно из каждого объекта получить новое значение (например: 1 - если мужчина, 2 — если женщина).
-
Используем
map, передаём в него функцию, которая принимает "человека" и возвращает число. -
Исходный массив остаётся без изменений → создаётся новый массив чисел.

⚙️ Реализация
- Для того чтобы метод
mapрешил на основе человека, какую цифру надо вернуть мы передаем внутрь него функцию-callback. - Callback работает с каждым человеком, определяет его пол и возвращает соответствующую цифру.
- После того как каждый человек обработан,
mapотдает нам результирующий массив с цифрами.
Как данная функция выглядела бы в js:
Слова
🤔 Идея
-
У нас есть массив объектов (слова на английском).
-
Нужно из каждого объекта получить новый, который будет содержать два свойства: слово на английском языке и его перевод на испанский.
-
Используем
map, передаём в него функцию, которая принимает исходное слово и возвращает новый объект. -
Исходный массив остаётся без изменений → создаётся новый массив объектов, каждый из которых состоит из двух свойств.

⚙️ Реализация
- Для того чтобы метод
mapсделал на основе слова соответсвующий объект мы передаем внутрь него функцию-callback. - Callback работает с каждым словом, переводит его на испанский и создает объект, содержащий само слово на английском и его перевод на испанском.
- После того как каждое слово обработано,
mapотдает нам результирующий массив с новыми объектами.
Как данная функция выглядела бы в js:
Практика
- Создаем файл
index.html, заполним базовым содержимым и внизу подключимmap.js
- Создаем файл
map.js - Запустим
index.htmlв браузере. Кликаем по файлу правой кнопкой мыши и выбираемOpen inи браузер. - Создаем массив чисел.
- Если мы захотим вывести в консоль новый массив, то получим массив с
undefined, так как callback внутриmapвозвращаетundefinedдля каждого элемента
В новом массиве будет лежать то, что возвращает нам callback-функция, переданная в map.
Задача со словами
🤔 Идея
- У нас есть массив слов.
- Надо получить массив объектов, где будет указано количество букв в слове.
⚙️ Реализация
- Так как нам нужно получить массив, основанный на данных исходного массива используем метод
map
🤔 Идея
- Нужно добавить порядковый номер слова в итоговый массив.
⚙️ Реализация
- Для этого мы можем использовать второй параметр, который принимает callback-функция -
index. То есть порядковый номер элемента в исходном массиве.
Нумерация элементов массива начинается с нуля
- В callback-функцию может приходить еще третий параметр array - исходный массив
Лайфхак
- Мы можем запустить наш
map.jsнепосредственно в Node.js и тогда все нашиconsole.logбудут отображаться в терминале. Для этого в терминале напишем:
Возврат значений функций и метод map
1. Функции и return
-
Когда мы вызываем функцию, на месте вызова подставляется то, что эта функция возвращает.
-
Если функция ничего не возвращает (нет
return), то результатом будетundefined.
- Если внутри есть
return, то в переменную попадёт именно возвращённое значение:
2. Необязательно сохранять результат
- Можно вызвать функцию и не сохранять её результат:
- В этом случае массив создастся, но потом будет удалён сборщиком мусора, так как ссылка на него не сохранилась.
3. Метод map — тоже функция
mapвызывается у массива:
-
На месте вызова
mapвозвращается новый массив. -
Внутри
mapна каждый элемент исходного массива вызывается callback, и результат callback складывается в новый массив.
4. Если не сохранять результат map
- Новый массив создастся.
- Но если его не сохранить в переменную → мы теряем к нему доступ.
- Через время сборщик мусора удалит его.
5. Передача результата вызова в другую функцию
- Можно передавать не сам массив, а результат вызова
mapнапрямую в другую функцию:
- Здесь в
runпередали результат работыmap, а не сам исходный массив и не сам метод.
Выводы
-
mapсоздаёт новый массив на основе исходного массива. -
mapпринимает callback-функцию и вызывает её для каждого элемента. -
callback в свою очередь принимает три параметра:
element(элемент массива),index(порядковый номер элемент),array(весь массив) -
то, что возвращает callback, попадает в новый массив
-
mapвсегда возвращает новый массив. Мы либо сохраняем его в переменную, либо сразу передаём дальше, либо теряем. -
mapвсегда возвращает новый массив той же длины, что и исходный.
🏠 Домашнее задание
Изучение метода Array.map()
- Цель задания
Освоить использование метода Array.map() для трансформации массивов, понять принципы создания
новых массивов на основе существующих данных.
Удачи в изучении! После решения первых двух задач вы будете готовы к следующему уроку.
Инструкции по выполнению
-
Создание файла: Создайте новый файл с любым названием (например,
map.js) в вашем проекте или папке для практики. -
Структура работы: Решайте задачи последовательно, записывая код в созданный файл. Можете добавлять комментарии для лучшего понимания.
-
Уровень сложности: Каждая следующая задача сложнее предыдущей:
- Задача 1 - Базовый уровень (простые операции с числами)
- Задача 2 - Легко-средний уровень (работа со строками и объектами)
- Задача 3 - Средний уровень (математические вычисления с объектами)
- Задача 4 - Средне-сложный уровень (сложные вычисления с несколькими полями)
- Рекомендации по выполнению:
- Обязательно: Решите минимум первые 2 задачи для понимания основ метода
map() - По желанию: Задачи 3 и 4 помогут углубить знания, но не являются обязательными для перехода к следующему уроку
- Проверка результатов: Используйте
console.log()для вывода результатов каждой задачи в консоль браузера или Node.js.
Задача 1
Описание: Дан массив чисел. Создайте новый массив, где каждое число увеличено на 10.
Задача 2
Описание: Дан массив строк с именами. Создайте новый массив объектов, где каждый объект содержит имя и его длину.
Задача 3
Описание: Дан массив объектов с информацией о товарах (название, цена). Создайте новый массив объектов с добавленным полем "finalPrice", которое содержит цену с учетом скидки 15%.
Решение:
Задача 4
Описание: Дан массив объектов с информацией о сотрудниках (имя, зарплата, стаж работы). Создайте новый массив объектов с добавленным полем "totalSalary", которое включает зарплату плюс бонус. Бонус рассчитывается как 5% от зарплаты за каждый год стажа.
Метод map — это сердце функционального программирования и основа React-разработки, без него
невозможно представить рендеринг списков компонентов и трансформацию данных. Каждый
профессиональный фронтенд-разработчик использует map ежедневно — это ваш главный инструмент для
превращения массива данных в пользовательский интерфейс! 🎯


