Ich bin ein JavaScript-Anfänger und versuche, zwei verschiedene Arrays mit Werten aus einem Hauptarray zu erstellen.
Mein Hauptarray sieht aus wie:
0: Array(3) [ 2011, 127072.7, 51584 ]
1: Array(3) [ 2012, 125920.3, 59974 ]
2: Array(3) [ 2013, 129305.4, 15468 ]
3: Array(3) [ 2014, 135364, 84554 ]
4: Array(3) [ 2015, 136757, 98754 ]
5: Array(3) [ 2016, 155653.5, 155548 ]
6: Array(3) [ 2017, 164130.5, 284848 ]
Und ich muss zwei Arrays erstellen, die zuerst so aussehen:
0: Array(2) [ 2011, 127072.7]
1: Array(2) [ 2012, 125920.3]
2: Array(2) [ 2013, 129305.4]
3: Array(2) [ 2014, 135364]
4: Array(2) [ 2015, 136757]
5: Array(2) [ 2016, 155653.5]
6: Array(2) [ 2017, 164130.5]
(erster und zweiter Wert)
und zweitens wie:
0: Array(2) [ 2011, 51584]
1: Array(2) [ 2012, 59974]
2: Array(2) [ 2013, 15468]
3: Array(2) [ 2014, 84554]
4: Array(2) [ 2015, 98754]
5: Array(2) [ 2016, 155548]
6: Array(2) [ 2017, 284848]
(erster und dritter Wert)
Ich versuche Spleißen, Filtern usw., aber ich weiß nicht, wie ich anfangen soll.
Es ist nicht notwendig, mir eine genaue Lösung zu schreiben, sondern nur Schritte, wie es geht.
javascript
arrays
Dominik Lev
quelle
quelle
Antworten:
Sie können einen dynamischen Ansatz wählen und alle Elemente des Arrays nach dem Schlüsselwert für jedes neue Array abrufen.
quelle
[first, second]
mitarray
und Sie erhalten Arrays mit allen Spalten der Daten als Arrays.r[i] = r[i] || []
sollten Sie nur langsamArray.from({length: (data[0]?.length ?? 1) - 1}, () => [])
für den anfänglichen Akkumulatorwert verwendenr[i]
in jeder Schleifeniteration vorhanden ist, während Sie einfach die erforderlichen Ergebnisarrays außerhalb desreduce
Aufrufs erstellen können .Sie können verwenden
.map()
, um Ihre Daten zu durchlaufen und eine Array-Destrukturierung zu verwenden, um die gewünschte Ausgabe zu erhalten:quelle
([year, ...values]) => [year, values[n]]
Sie können
Array.prototype.forEach
die Elemente des ursprünglichen Arrays durchlaufen, dann die neuen Elemente erstellen und in neue Arrays verschieben:Ausgabe:
Dynamisches Generieren unserer Arrays, damit die Lösung funktioniert, unabhängig davon, wie viele Elemente die ursprünglichen Arrays enthalten:
Ausgabe:
quelle
Zunächst haben Sie am Anfang ein Array von Arrays. Sie können
map
dieses Array in zwei verschiedene Arraysdestructuring
umwandeln, indem Sie jeden Wert auf präzise Weise aus den Subarrays abrufen:quelle
Durchlaufen Sie das Hauptarray und geben Sie ein neues Array zurück, indem Sie feste Indexwerte verwenden, um auf die Werte Ihrer untergeordneten Arrays zuzugreifen.
quelle
Sie können die Funktion Reduzieren wie folgt verwenden, die nur einmal wiederholt wird:
quelle
Bitte schön
quelle
Ich habe Map for Loop verwendet, zwei Arrays, um die benötigten Werte zu pushen.
quelle
eine andere Lösung :
quelle
Für die generische Lösung bietet das Erstellen eines Indexarrays für die Wertespalten eine einfache Möglichkeit, die vollständigen Daten den gewünschten Arrays zuzuordnen.
gibt Ihnen eine Reihe von Indizes abzüglich der einen Spalte, die das Jahr war, und
gibt Ihnen das gewünschte Array für die n-te Wertespalte. Damit:
quelle
Eine weitere Lösung für Eingabearrays mit generischer Länge.
quelle
Verwenden Sie diese Lösung, um eine generische Kombination aus einem vorhandenen mehrdimensionalen Array zu erstellen. Sie müssen den Index der Elemente übergeben, aus denen explizit ausgewählt werden soll, und das macht ihn generisch.
quelle