Самостоятельная реализация функции map

Map создаёт новый массив той же длины, преобразуя существующие элементы через callback. Для разреженного массива отсутствующие индексы остаются дырками.

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

Что ответить на собеседовании

Map создаёт новый массив той же длины, преобразуя существующие элементы через callback. Для разреженного массива отсутствующие индексы остаются дырками.

Подробный разбор

Ответ с пояснениями

Условие

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

Ответ

Map создаёт новый массив той же длины, преобразуя существующие элементы через callback. Для разреженного массива отсутствующие индексы остаются дырками.

Учебный вариант для обычных массивов:

function map(array, callback, thisArg) {
  if (!Array.isArray(array) || typeof callback !== 'function') throw new TypeError('Нужны массив и callback');
  const length = array.length;
  const result = new Array(length);
  for (let index = 0; index < length; index++) {
    if (index in array) result[index] = callback.call(thisArg, array[index], index, array);
  }
  return result;
}

Длина фиксируется до обхода; сама функция не меняет вход. Это не полный spec-polyfill для array-like объектов, subclass species и всех экзотических объектов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее