> Что такое метод map в JavaScript и как он работает (JavaScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: Домклик, Софт Медиа Групп, Яндекс

Стек: JavaScript

> Пример ответа

Короткий ответ

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

Подробное объяснение

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

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

map работает синхронно и не прерывается - он всегда обрабатывает все элементы. Если нужно остановиться на определённом условии, используйте filter или reduce.

На практике

map идеален для трансформации данных: например, извлечения одного поля из массива объектов, форматирования строк, преобразования чисел. Он часто используется в связке с JSX в React для рендеринга списков.

Важно помнить: если колбэк не возвращает значение, элемент нового массива будет undefined. Также map не работает с разреженными массивами - он пропускает пустые слоты, но сохраняет их в новом массиве как undefined.

Пример кода

JAVASCRIPT
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]
console.log(numbers); // [1, 2, 3, 4] - исходный не изменился
// Извлечение поля из объектов
const users = [
{ name: 'Анна', age: 25 },
{ name: 'Иван', age: 30 }
];
const names = users.map(user => user.name);
console.log(names); // ['Анна', 'Иван']

Как отвечать на собеседовании

Начни с определения: map создаёт новый массив на основе преобразования каждого элемента. Подчеркни иммутабельность - это главное отличие от forEach. Упомяни, что колбэк принимает три аргумента, но чаще используются только первый и второй. Приведи пример с числами или объектами. Если спросят про производительность, скажи, что map немного медленнее цикла for, но разница незначительна для большинства задач, а читаемость кода выше.

Что проверяет интервьюер

  • Понимание разницы между мутацией и созданием нового массива
  • Знание сигнатуры колбэка и необязательных аргументов
  • Умение применять map к реальным данным (массивы объектов)
  • Отличие от forEach, filter, reduce

Типичные ошибки

  • Забыть вернуть значение из колбэка - получается массив из undefined
  • Пытаться прервать map с помощью break или return (это не работает)
  • Использовать map только ради побочных эффектов (для этого есть forEach)
  • Путать map с forEach: первый возвращает новый массив, второй - undefined
  • Мутировать исходный массив внутри колбэка (нарушение иммутабельности)

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью