Как объяснить получаемый результат, если не указывается initialValue у .reduce() в JS?
Хотелось бы понять, что происходит "под капотом" JS, когда указываешь как "0" initialValue у метода .reduce() или НЕ указываешь его вовсе. Приведу две версии кода:
- первая, где указано значение "0" initialValue у метода .reduce()
- вторая версия, где initialValue у метода .reduce() НЕ указан.
Результаты в консоль выводятся такие:
- в первой версии: "5"
- во второй версии: "5.888888888888888"
Вопрос: почему такая разница? Почему так получается? Возможно, ошибочный код?
Вот версия №1:
const arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const average = arrayNumbers.reduce((acc, num) => acc + num / arrayNumbers.length, 0)
console.log(average)//5
Вот версия № 2:
const arrayNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const average = arrayNumbers.reduce((acc, num) => acc + num / arrayNumbers.length)
console.log(average)//5.888888888888888
Ответы (1 шт):
Автор решения: Rashid
→ Ссылка
Разобрался! Когда мы не указываем initialValue, тогда accumulator принимает значение первого элемента. Отсюда и разница в результатах.