Функция reduce
в JavaScript применяется для сворачивания массива в одно значение с помощью указанной функции обратного вызова (callback). Однако, чтобы reduce
корректно аккумулировал значение, необходимо в явном виде вернуть аккумулированное значение из функции обратного вызова.
Проблема возникает, когда забыли вернуть аккумулированное значение внутри функции обратного вызова reduce
. В этом случае reduce
будет выполняться, но значение не будет аккумулироваться, и результатом будет undefined
.
Например, предположим, у нас есть массив чисел, и мы хотим вычислить их сумму с помощью reduce
:
const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((accumulator, currentValue) => { accumulator + currentValue; // Не хватает return здесь }, 0); console.log(sum); // Вывод: undefined
Чтобы исправить эту проблему и аккумулировать значение правильно, возвращайте аккумулированное значение из функции обратного вызова reduce
:
const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((accumulator, currentValue) => { return accumulator + currentValue; // Возвращаем аккумулированное значение }, 0); console.log(sum); // Вывод: 15
Таким образом, чтобы reduce
аккумулировал значение, необходимо всегда возвращать новое аккумулированное значение внутри функции обратного вызова.