Обойдите существующие индексы массива и запишите результаты callback на те же позиции в новом массиве. Не изменяйте исходный массив и сохраняйте пропуски.
Создание собственной реализации функции map
Обойдите существующие индексы массива и запишите результаты callback на те же позиции в новом массиве. Не изменяйте исходный массив и сохраняйте пропуски.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разработать пользовательскую версию метода map, реализовав её логику без использования готовых библиотечных решений.
Ответ
Обойдите существующие индексы массива и запишите результаты callback на те же позиции в новом массиве. Не изменяйте исходный массив и сохраняйте пропуски.
function map(array, callback, thisArg) {
if (typeof callback !== 'function') throw new TypeError('Expected function');
const length = array.length, 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;
}
Callback получает значение, индекс и исходный массив; длина фиксируется до начала обхода. Для [1,2] и x => x * 2 результат [2,4]. Это базовый алгоритм для обычного массива, без всех специальных правил array-like и Symbol.species.