首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >求2维矩阵(m×n)中每行和每列的和

求2维矩阵(m×n)中每行和每列的和
EN

Stack Overflow用户
提问于 2016-08-02 20:49:00
回答 2查看 2K关注 0票数 0

如何求2维矩阵(m×n)中每行和每列的和。

代码语言:javascript
运行
复制
[
  [1, 2, 3],
  [3, 2, 1]
]

我知道在一维数组中,我们可以这样做:

代码语言:javascript
运行
复制
var sum = [5, 6, 3].reduce(add, 0);

function add(a, b) {
  return a + b;
}

console.log(sum);
EN

回答 2

Stack Overflow用户

发布于 2016-08-02 21:45:40

使用ECMAScript6,您可以执行以下操作:

代码语言:javascript
运行
复制
var matrix = [
  [ 1, 2, 3 ],
  [ 7, 2, 6 ]
];

// sums of rows
var rowSum = matrix.map(r => r.reduce((a, b) => a + b));

// sums of columns
var colSum = matrix.reduce((a, b) => a.map((x, i) => x + b[i]));

console.log(rowSum);
console.log(colSum);

行的总和很容易说明。让我们考虑一个3x3矩阵,它在这里更容易格式化:

代码语言:javascript
运行
复制
[ 1 2 3 ] -- reduce --> 6  \
[ 7 2 6 ] -- reduce --> 15  } -- map --> [ 6, 15, 7 ]
[ 4 1 2 ] -- reduce --> 7  /

列的总和就不那么微不足道了。我们通过一次“映射”2行来“减少”:

代码语言:javascript
运行
复制
      [ 1 2 3 ]                     [ 8 4 9 ]
    + [ 7 2 6 ]   -- reduce -->   + [ 4 1 2 ]
      ---------                     ---------
map = [ 8 4 9 ]              map = [ 12 5 11 ]
票数 6
EN

Stack Overflow用户

发布于 2016-08-02 21:40:54

下面的代码显示了两个使用map的示例

第一个是水平地对二维数组求和。

代码语言:javascript
运行
复制
    var array = [ [1,2,3], [3,2,1] ];
    var sum= array.map( function(row){
      return row.reduce(function(a,b){ return a + b; }, 0);
    });

第二个是对2D数组进行垂直求和。

代码语言:javascript
运行
复制
var array = [ [1,2,3], [3,2,1] ];
var sum2= array.map(function(row, i) {
  return array.map(function(row) {
    return row[i]; }
  ).reduce(function(a, b) {
    return a+b;
  }, 0);
});

检查工作example

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38720885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档