Создание собственного метода map

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

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

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

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

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

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

Условие

Реализуйте свою версию функции map: она должна принимать коллекцию (например, массив) и функцию‑преобразователь, а затем возвращать новый массив, состоящий из результатов применения переданной функции к каждому элементу исходной коллекции.

Ответ

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

function mapArray(array, mapper, thisArg) {
  if (typeof mapper !== 'function') throw new TypeError('Нужна функция');
  const length = array.length, result = Array(length);
  for (let index = 0; index < length; index++) {
    if (index in array) result[index] = mapper.call(thisArg, array[index], index, array);
  }
  return result;
}

Начальная длина фиксируется до callback: добавленные позже элементы за этой границей не обрабатываются. Массив результата новый, но mapper может сам менять объекты или вход. Это учебная версия для массивов, не полный generic-polyfill со Species. Время O(n), память O(n).

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

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

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

Подробнее