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)
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)
的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
使用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 ]
我覺得可視化老師和全面。很好解釋。 –
問題可能出現重複:http://stackoverflow.com/questions/15083103/sum-of-two-dimensional-array –
重複並不可能,在你的上面的鏈接答案是可用的二維數組的總和,但我想要行和列分離,簡單的評論和放棄投票不好 –