@Night_Harpy

Как добавить к каждому элементу массива сумму предыдущих элементов?

К примеру, есть массив: arr = [ 1, 2, 3, 4, 5, 6, 7, 8 ].
Надо вывести такой результат: [ 1, 3, 6, 10, 15, 21, 28, 36 ].
  • Вопрос задан
  • 135 просмотров
Решения вопроса 5
0xD34F
@0xD34F Куратор тега JavaScript
arr.reduce((acc, n) => (acc.arr.push(acc.sum += n), acc), { arr: [], sum: 0 }).arr

или

arr.map((n, i, a) => eval(a.slice(0, i + 1).join('+')))

или

arr.map((n, i, a) => a.reduce((acc, m, j) => acc + m * (j <= i), 0))

или

arr.reduce((acc, n, i) => (acc.push(n + (acc[i - 1] ?? 0)), acc), [])

или (вместо создания нового массива модифицируется исходный)

arr.forEach((n, i, a) => a[i] += a[i - 1] || 0)
Ответ написан
Seasle
@Seasle Куратор тега JavaScript
Помог - отметь решением \( ゚ヮ゚)/
const createSequence = numbers => {
	const store = numbers.reduce((accumulator, number) => {
		accumulator.intermediateValue += number;
		accumulator.sequence.push(accumulator.intermediateValue);

		return accumulator;
	}, {
		sequence: [],
		intermediateValue: 0
	});

	return store.sequence;
};
Ответ написан
let arr=[1,2,3,4,5,6,7,8]
let sum = 0

for( key in arr )
	arr[key] = sum += arr[key]

console.log( arr ) // [1, 3, 6, 10, 15, 21, 28, 36]
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Бородатый программер
arr.reduce(
  ([prevArr, prevSum], value) => (
    sum => [[...prevArr, sum], sum]
  )(prevSum + value),
  [[], 0]
)[0]
Ответ написан
let arr = [1, 2, 3, 4, 5, 6, 7, 8];

arr.reduce((tmp, elt, index) => {
	return arr[index] = tmp + elt;
});

console.log(arr); // [1, 3, 6, 10, 15, 21, 28, 36]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы