Wie summiere ich Elemente mit demselben Index in einem Array von Arrays zu einem einzigen Array?

8

Nehmen wir an, ich habe ein Array von Arrays, so:

%Vor%

Wie erzeuge ich ein neues Array, das alle Werte an jeder Position der inneren Arrays in Javascript summiert? In diesem Fall wäre das Ergebnis: [17, 10, 19]. Ich muss in der Lage sein, eine Lösung zu haben, die unabhängig von der Länge der inneren Arrays funktioniert. Ich denke, dass dies mit einer Kombination aus Map und For-Of möglich ist, oder möglicherweise reduziert, aber ich kann meinen Kopf nicht umschließen. Ich habe gesucht, kann aber keine Beispiele finden, die diesem entsprechen.

    
hmlee 24.12.2015, 21:37
quelle

6 Antworten

34

Sie können Array.prototype.reduce() in Kombination mit verwenden Array.prototype.forEach() .

%Vor%
    
Nina Scholz 24.12.2015, 21:44
quelle
5

Verwenden Sie lodash :

%Vor% %Vor%

_.unzip fügt undefined s ein, wenn die Zeile kürzer ist als die anderen, und _.sum behandelt undefinierte Werte als 0.

Wenn Ihre Eingabedaten die Elemente undefined und null enthalten können und Sie diese als 0 behandeln möchten, können Sie Folgendes verwenden:

%Vor% %Vor%
    
Tamas Hegedus 24.12.2015 21:53
quelle
4

Einzeiler in ES6 , mit map und reduce

%Vor%
    
isvforall 29.04.2016 13:26
quelle
0

Unter der Annahme, dass die verschachtelten Arrays immer die gleichen Längen haben, können concat und reduced verwendet werden.

%Vor%
    
epascarello 24.12.2015 22:10
quelle
0

Angenommen Array ist statisch wie angezeigt.

%Vor%
    
Abhishek Gurjar 09.04.2017 13:21
quelle
0
%Vor%     
pelak 09.05.2017 09:54
quelle

Tags und Links