Почему «array1.reduce (reducer)» в абзаце кода использует «.reduce» после «array1»?Похоже, что array1 не содержит уменьшить этот объект - PullRequest
0 голосов
/ 01 марта 2019

const array1 = [1, 2, 3, 4];
const reducer = (previous, current) => previous + current;


// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15

При запуске вышеуказанных кодов выдает 10, а затем 15

1 Ответ

0 голосов
/ 01 марта 2019

Я думаю, что у вас есть проблемы с тем, как он выполняется

Your Example:
const array1 = [1, 2, 3, 4];
const reducer = (previous, current) => previous + current;

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));`enter code here`
// expected output: 15

Как вы говорите, почему он не уменьшается при первом применении .reduce.

так, когдаВы применяете .reduce, это не изменяет исходный массив, но возвращает вновь созданный массив. Так что редуктор применяется к вновь созданному массиву, а не к исходному массиву (array1)

Таким образом, вы можете проверить вывод с помощью следующего кода, он может очиститьВаше сомнение:

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => 
{
 console.log("Data is"+accumulator +' '+ currentValue); 
 return accumulator + currentValue;
}

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15

где аккумулятор - это значение, которое он возвращает из функции редуктора.currentValue - текущее значение вашего массива.

...