@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);

    }
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 3
Лучше, если функция будет «не в курсе» размеров массива, так универсальнее.
Тут не проверяю, что массив двухмерный, что элементы числа, что все строки равны по длине. А надо бы..

Берём первую (нулевую) строку и проходясь по остальным, прибавляем значения из соответствующих колонок:
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
Вот вам суммы и вдоль, и поперёк, а где там у вас столбцы, и где строки - разбирайтесь сами:
var
  rows = 3,
  cols = 5,
  array = [...Array(rows)].map(() => [...Array(cols)].map(() => Math.random() * 10 | 0))

var
  sumRows = array.map(n => n.reduce((sum, m) => sum + m, 0)),
  sumCols = array[0].map((n, i) => array.reduce((sum, m) => sum + m[i], 0))
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Biganto Москва
от 130 000 до 130 000 руб.
от 2 500 до 4 000 usd.
HTML Academy Москва
от 85 000 до 100 000 руб.
14 авг. 2018, в 18:01
12000 руб./за проект
14 авг. 2018, в 17:33
5000 руб./за проект
14 авг. 2018, в 16:33
1000 руб./за проект