Показать сообщение отдельно
  #1 (permalink)  
Старый 12.12.2018, 13:25
hoz hoz вне форума
Интересующийся
Отправить личное сообщение для hoz Посмотреть профиль Найти все сообщения от hoz
 
Регистрация: 26.11.2018
Сообщений: 19

Вопрос по методу reduce()
Читаю документацию на 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-функции до этого момента ещё не было. Но как я вижу, в результирующем массиве всё не так.. там первым значением попадает первый элемент исходного массива.
С чего бы то вдруг?
Ответить с цитированием