Есть массив arr = [1,2,3,4,5] и нужно написать функцию , которая возвращает массив его частичных сумм. Иначе говоря, вызов этой ф-ии должен возвращать новый массив из такого же числа элементов, в котором на каждой позиции должна быть сумма элементов arr до этой позиции включительно.
То еcть:
arr = [ 1, 2, 3, 4, 5 ]
getSums( arr ) = [ 1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5 ] = [ 1, 3, 6, 10, 15 ]
благодаря различным источникам я нашел решение:
let arr = [1, 2, 3, 4, 5];
function getSums(el) {
let result = [];
el.reduce((sum, val, ind) => {
let sumEl = sum + val;
result[ind] = sumEl;
return sumEl;
}, 0);
return result;
}
console.log(getSums(arr));
Но у меня есть вопросы:
1) Зачем в качестве в качестве аргумента в getSums передавать el? Ведь получается, что под el подразумевается каждый элемент массива, но при этом внутри ф-ии применяется метод reduce, который и так предназначен для последовательной обработки каждого элемента массива... обычно же пишется arr.reduce, а тут в переводе на человеческий язык получается, что нужно выполнить какое-то действие над каждым элементов в каждом элементе.
2) Я не совсем понимаю строчку result[ind] = sumEl. Как я понял, этой строчка вносит результат суммы предыдущего и следующего элемента массива arr в массив result, верно? И это тоже самое, что push-ить сумму в новый массив? Просто опять же в переводе на человеческий язык это звучит как - КАЖДЫЙ индекс элемента массива result равен результату суммы элементов массива arr.
3) Почему код не работает без строчки return sumEl? Зачем его возвращать? Чтобы в reduce хранился результат суммы? Тот же вопрос про return result.