2016-08-02 19 views
-2

ich kenne eindimensionale Array-Summe, wie zu finden Finden Sie die Summe jeder Zeile sowie die jeder Spalte in 2-dimensionalen Matrix (m x n). [1,2,3] [3,2,1]Finden Sie die Summe jeder Zeile sowie die jeder Zeile in 2-dimensionaler Matrix (m Xn)

+1

Mögliche doppelte Frage: http://stackoverflow.com/questions/15083103/sum-of-two-dimensional-array –

+0

Vervielfältigung ist nicht Möglich, in Ihrer obigen Verbindung ist Antwort verfügbare Gesamtsumme der zweidimensionalen Reihe, aber ich will Reihe und sowie Spalte trennbar, einfaches Kommentieren und Geben der Abstimmung ist nicht gut –

Antwort

0

der follwoing Code zeigt zwei Beispiele map

die ersten summiert das 2D-Array horizontal verwendet wird.

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

Die zweite summiert das 2D-Array vertikal.

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

prüfen Arbeits example

2

Mit ECMAScript6 können Sie tun:

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

Die Summe der Zeilen ziemlich einfach zu veranschaulichen. Betrachten wir eine 3x3-Matrix, die hier einfacher zu formatieren ist:

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

Die Summe der Spalten ist weniger trivial. Wir ‚reduzieren‘ von ‚Mapping‘ 2 Zeilen gleichzeitig:

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

Ich finde die Sichtbarmachung oldschool und umfassend. Sehr gut erklärt. –

Verwandte Themen