> Что такое метод map в JavaScript и как он работает (JavaScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик, Софт Медиа Групп, Яндекс
Стек: JavaScript
> Пример ответа
Короткий ответ
map - это метод массива, который создаёт новый массив, применяя переданную функцию-колбэк к каждому элементу исходного массива. Он не мутирует оригинальный массив, а возвращает новый с преобразованными значениями. Длина нового массива всегда равна длине исходного.
Подробное объяснение
Метод map относится к функциональным методам массивов в JavaScript. Он принимает функцию-колбэк, которая вызывается для каждого элемента массива по порядку. Колбэк получает три аргумента: текущий элемент, его индекс и сам массив. Результат выполнения колбэка для каждого элемента становится элементом нового массива.
Ключевая особенность map - иммутабельность: исходный массив остаётся неизменным. Это важно в функциональном программировании и при работе с React, где мутация данных может привести к багам.
map работает синхронно и не прерывается - он всегда обрабатывает все элементы. Если нужно остановиться на определённом условии, используйте filter или reduce.
На практике
map идеален для трансформации данных: например, извлечения одного поля из массива объектов, форматирования строк, преобразования чисел. Он часто используется в связке с JSX в React для рендеринга списков.
Важно помнить: если колбэк не возвращает значение, элемент нового массива будет undefined. Также map не работает с разреженными массивами - он пропускает пустые слоты, но сохраняет их в новом массиве как undefined.
Пример кода
JAVASCRIPTconst 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 - Мутировать исходный массив внутри колбэка (нарушение иммутабельности)
> Похожие задачи по frontend
Что делать чтобы не блокировать основной поток при обработке большого массива без использования web workers
Как реализовать функцию auth через колбек в JavaScript
Как работает конструктор Promise, синхронность создания и асинхронность резолва в JavaScript
Почему новый объект не изменяет исходный объект при передаче в функцию в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью