Метод ReduceRight

Рейтинг: 1Ответов: 1Опубликовано: 16.01.2023

// Входной массив
let arr = [1, 2, 3, 4]
// Оставляем только чётные числа
let b = arr.filter(element => !(element % 2))
// Считаем квадратный корень и записываем в аккумулятор
let c = b.reduceRight((accumulator, element) => accumulator + Math.sqrt(element), 0); // 3.44*
console.log(b)
console.log(c)

Подскажите почему в accumulator записывается корень из 2 +корень из 4? А не 2 +корень из 4?

В аккумулятор же записывается первое значение к которому прибавляют в дальнейшем, почему оно в корне?

Ответы

▲ 0Принят

В коде установлено начальное значение , 0);. В этом случае оно и будет первым значением аккумулятора.

Также в коде использован .reduceRight, который обходит массив с конца

Чтобы в качестве начального значения брался первый элемент массива - нужно убрать этот параметр. Чтобы сложение было с первого элемента, вместо reduceRight нужно использовать .reduce

// Входной массив
let arr = [1, 2, 3, 4]
// Оставляем только чётные числа
let b = arr.filter(element => !(element % 2))
// Считаем квадратный корень и записываем в аккумулятор
let c = b.reduce((accumulator, element) => accumulator + Math.sqrt(element)); // 3.44*
console.log(b)
console.log(c)