@Night_Harpy

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

К примеру, есть массив: arr = [ 1, 2, 3, 4, 5, 6, 7, 8 ].
Надо вывести такой результат: [ 1, 3, 6, 10, 15, 21, 28, 36 ].
  • Вопрос задан
  • 1472 просмотра
Решения вопроса 5
0xD34F
@0xD34F Куратор тега JavaScript
Собрать новый массив:

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

// или

const newArr = arr.reduce((acc, n) => (acc[0].push(acc[1] += n), acc), [ [], 0 ])[0];

// или

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

// или

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

Изменить существующий:

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
Crazy on performance...
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]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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