@Lolipop999

Как посчитать сумму каждого элемента многомерного массива?

Есть массив let arr = [[1, 2, 3],[4, 5, 6],[7, 8, 9]];. Как посчитать сумму того, что находится в каждом элементе-массиве самого массива arr? Чтобы при выводе выдавало [6, 15, 24]?
Я пробовал через reduce или через цикл for, но это обращение к каждому элементу массива arr, а как залезть внутрь самого элемента и задать для каждого элемента-массива условия, не понимаю
  • Вопрос задан
  • 600 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
[[1, 2, 3],[4, 5, 6],[7, 8, 9]].map(arr => arr.reduce((acc, c) => acc + c)) 
// [ 6, 15, 24 ]


Объяснение
Каждый элемент внешнего массива трансформируется в число:
[
  [1, 2, 3] --> 6
  [4, 5, 6] --> 15
  [7, 8, 9] --> 24
]
— это операция map(): каждый-в-каждый.

Теперь суть каждого такого преобразования. Из массива получить единственное значение — это reduce()

Сложить все элементы массива и вернуть сумму. Аккумулятором будет эта самая сумма. Очередное значение складывать с накопленным аккумулятором и возвращать сумму.
reduce( (accumulator, current) => accumulator + current )
с обычной функцией
reduce(
  function(accumulator, current) {
    return accumulator + current;
  }
)

Начальное значение аккумулятора даже не обязательно указывать вторым аргументом, т.к. в таком случае сразу берётся значение первого элемента. В деле сложения это вполне устраивает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sharp97
@sharp97
не фонтан но брызги есть
Например вот так
https://codepen.io/sharpprahs/pen/VwBWVzE
UDP: отредактировал ответ
Ответ написан
Комментировать
godsplan
@godsplan
const arr = [[1,2,3], [4,5,6], [7,8,9]];
const res = arr.flatMap(elem => elem.reduce((acc, val) => acc + val, 0));
console.log(res);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы