Пользовательская реализация myReduce повторяет поведение нативного Array.prototype.reduce(), проходя по элементам массива и накапливая их в одно итоговое значение с помощью переданного callback.
(accumulator, currentValue, index, array)Если initialValue не передан, первый элемент становится начальным accumulator и итерация начинается с индекса 1. В противном случае итерация начинается с индекса 0.
Array.prototype.myReduce = function (callback, initialValue) {
let accumulator = initialValue;
let startIndex = 0;
if (accumulator === undefined) {
accumulator = this[0];
startIndex = 1;
}
for (let i = startIndex; i < this.length; i++) {
accumulator = callback(accumulator, this[i], i, this);
}
return accumulator;
};
initialValue; если нет, используем первый элемент массиваstartIndexaccumulator возвращаемым значением callbackaccumulator после завершения циклаthis указывает на массив, на котором был вызван этот метод(accumulator, element, index, array) в callback гарантирует полную совместимость с сигнатурой нативного reduce()initialValue, что может вызвать ошибку выполнения в production-кодеКогда initialValue не передано в myReduce, первый элемент массива становится аккумулятором и итерация начинается со второго элемента (индекс 1).
Новый — ещё не проверен сообществом
Вы