Почему `array.reduce ()` начинается с первого индекса - PullRequest
1 голос
/ 02 мая 2019

Мне было интересно, почему индекс в array.reduce() начинается с 1, а не с 0 в приведенном ниже примере

([11,22,33,44]).reduce((acc, val, index) => console.log(val));
//This outputs 22, 33 and 44 and skips 11

Ответы [ 2 ]

6 голосов
/ 02 мая 2019

Аккумулятор принимает первое значение, если вы не передаете значение в качестве второго аргумента:

// add a vlaue to start
([11,22,33,44]).reduce((acc, val, index) => console.log(val), 0);
// now all values are iterated

Если вы зарегистрируете аккумулятор, вы увидите, как используются все значения без второго аргумента:

// Show accumulator return value
let final = ([11,22,33,44]).reduce((acc, val, index) => (console.log("acc:", acc, "val:", val), val));

// final is the last object that would have been the accumulator
console.log("final:", final)
3 голосов
/ 02 мая 2019

Причина .reduce предназначен для работы без начального аккумулятора:

    [1, 2, 3].reduce((a, b) => a + b)

Для этого a будет первым элементом и b вторым на первой итерации,следующий примет предыдущий результат и третье значение.

Если вы передадите начальный аккумулятор в качестве второго аргумента, он начнется с индекса 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...