@MrFlatman
Студент

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

Дан массив 3х5, необходимо посчитать сумму в каждом его столбце. Пытался реализовать это таким методом, но понял, что таким образом я просто пробую посчитать общую сумму массива, и тем более не правильно. Подскажите, пожалуйста, как посчитать именно сумму в каждом столбце двумерного массива?
function mass_two() {
        var n = 3,
            m = 5;
        var mas = [];
        for (var i = 0; i < m; i++) {
            mas[i] = [];
            for (var j = 0; j < n; j++) {
                mas[i][j] = Math.floor(Math.random() * 30) + 1;
                sum = 0;
                sum += mas[i][j];

            }
        }


        console.log(mas);
        console.log(sum);

    }
  • Вопрос задан
  • 4248 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Лучше, если функция будет «не в курсе» размеров массива, так универсальнее.
Тут не проверяю, что массив двухмерный, что элементы числа, что все строки равны по длине. А надо бы..

Берём первую (нулевую) строку и проходясь по остальным, прибавляем значения из соответствующих колонок:
function sum2d(arr) {
  var row, col, sum = arr[0].slice();
  for( row = 1; row < arr.length; row++) {
    for( col = 0; col < sum.length; col++) {
      sum[col] += arr[row][col];
    }
  }
  return sum;
}

sum2d([
  [1,2,3],
  [8,9,0],
])
// [9,11,3]
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
Вот массив:

const rows = 3;
const cols = 5;
const max = 10;
const arr =
  Array.from({ length: rows }, () =>
    Array.from({ length: cols }, () =>
      Math.random() * max | 0
    )
  );

А вот суммы и вдоль, и поперёк, а где там у вас столбцы, и где строки - разбирайтесь сами:

const sumRows = arr.map(n => n.reduce((acc, m) => acc + m, 0));
const sumCols = (arr[0] || []).map((n, i) => arr.reduce((acc, m) => acc + m[i], 0));

// или

const [ sumRows, sumCols ] = arr.reduce((acc, n, i) => (
  n.forEach((m, j) => (acc[0][i] += m, acc[1][j] += m)),
  acc
), [ rows, cols ].map(n => Array(n).fill(0)));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
Типа такого?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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