2016-08-02 50 views
-2
var sum = [5, 6, 3].reduce(add, 0); 

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

alert(sum); 

我知道一维数组求和如何找到每行的总和以及每列的总和在2维矩阵(m×n个)。[1,2,3] [3,2,1]求二维矩阵的每一行以及每一列的总和(m×n)

+1

问题可能出现重复:http://stackoverflow.com/questions/15083103/sum-of-two-dimensional-array –

+0

重复并不可能,在你的上面的链接答案是可用的二维数组的总和,但我想要行和列分离,简单的评论和放弃投票不好 –

回答

0

的follwoing代码是使用map

第一总和2D阵列水平地示出了两个例子。

var array = [ [1,2,3], [3,2,1] ]; 
    var sum= array.map(function(row){ 
     return row.reduce(function(a,b){ return a + b; }, 0); 
    }); 

第二个数组垂直地将二维数组相加。

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

2

使用ECMAScript6,你可以这样做:

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矩阵,它在这里更容易格式化:

[ 1 2 3 ] -- reduce --> 6 \ 
[ 7 2 6 ] -- reduce --> 15 } -- map --> [ 6, 15, 7 ] 
[ 4 1 2 ] -- reduce --> 7/

列的总数不那么无关紧要。我们“减少”通过“映射”两行进行查询:

 [ 1 2 3 ]      [ 8 4 9 ] 
    + [ 7 2 6 ] -- reduce --> + [ 4 1 2 ] 
     ---------      --------- 
map = [ 8 4 9 ]    map = [ 12 5 11 ] 
+0

我觉得可视化老师和全面。很好解释。 –

相关问题