Читаю
документацию на mdn по методу reduce().
Интересен первый параметр callback-функции, который называется
accumulator:
Вот оригинальное описание:
"accumulator
The
accumulator accumulates the callback's return values; it is the accumulated value previously returned in the last invocation of the callback, or initialValue, if supplied (see below)."
Очевидно, что
accumulator накапливает все итерации вызовов callback-функции т.е. каждый её return.
В
учебнике странный пример:
function getSums(arr) {
var result = [];
if (!arr.length) return result;
var totalSum = arr.reduce(function(sum, item) {
result.push(sum);
return sum + item;
});
result.push(totalSum);
return result;
}
alert(getSums([1,2,3,4,5])); // 1,3,6,10,15
alert(getSums([-2,-1,0,1])); // -2,-3,-3,-2
Я вижу что, когда метод
reduce вызовется первый раз, то в массив result должно попасть пустое значение. Я имею ввиду о строке:
result.push(sum);
Логика такова, что предыдущего вызова callback-функции до этого момента ещё не было. Но как я вижу, в результирующем массиве всё не так.. там первым значением попадает первый элемент исходного массива.
С чего бы то вдруг?