Das folgende Beispiel definiert ein zweidimensionales Array mit dem Namen activities:
let activities = [
['Work', 9],
['Eat', 1],
['Commute', 2],
['Play Game', 1],
['Sleep', 7]
];
Im Array der Aktivitäten steht die erste Dimension für die Aktivität und die zweite für die Anzahl der Stunden, die pro Tag für jede Aktivität aufgewendet werden.
Um das Aktivitäten-Array in der Konsole anzuzeigen, verwenden Sie die Methode console.table() wie folgt:
console.table(activities);
Die folgende Abbildung zeigt die Ausgabe:
(index) 0 1
0 'Work' 9
1 'Eat' 1
2 'Commute' 2
3 'Play Game' 1
4 'Sleep' 7
Beachten Sie, dass die (index)
Spalte dient der Veranschaulichung, die die Indizes des inneren Arrays angibt.
Um auf ein Element des mehrdimensionalen Arrays zuzugreifen, verwenden Sie zunächst eckige Klammern, um auf ein Element des äußeren Arrays zuzugreifen, das ein inneres Array zurückgibt, und dann eine weitere eckige Klammer, um auf das Element des inneren Arrays zuzugreifen.
Das folgende Beispiel gibt das zweite Element des ersten inneren Arrays im obigen Aktivitäten-Array zurück:
console.log(activities[0][1]); // 9
Hinzufügen von Elementen zu einem mehrdimensionalen JavaScript-Array
Sie können die Array-Methoden verwenden, wie z. B. push()
y splice()
um Elemente eines mehrdimensionalen Arrays zu manipulieren.
Um zum Beispiel ein neues Element am Ende eines mehrdimensionalen Arrays hinzuzufügen, verwenden Sie die push()
Methode wie folgt:
activities.push(['Study',2]);
(index) 0 1
0 'Work' 9
1 'Eat' 1
2 'Commute' 2
3 'Play Game' 1
4 'Sleep' 7
5 'Study' 2
Um ein Element in der Mitte des Arrays einzufügen, verwenden Sie die splice()
Methode. Im Folgenden wird ein Element an der zweiten Position des Aktivitäten-Arrays eingefügt:
activities.splice(1, 0, ['Programming', 2]);
(index) 0 1
0 'Work' 9
1 'Programming' 2
2 'Eat' 1
3 'Commute' 2
4 'Play Game' 1
5 'Sleep' 7
6 'Study' 2
In diesem Beispiel wird der prozentuale Anteil der für die einzelnen Aktivitäten aufgewendeten Stunden berechnet und an das innere Array angehängt.
activities.forEach(activity => {
let percentage = ((activity[1] / 24) * 100).toFixed();
activity[2] = percentage + '%';
});
(index) 0 1 2
0 'Work' 9 '38%'
1 'Programming' 2 '8%'
2 'Eat' 1 '4%'
3 'Commute' 2 '8%'
4 'Play Game' 1 '4%'
5 'Sleep' 7 '29%'
6 'Study' 2 '8%'
Entfernen von Elementen aus einem mehrdimensionalen JavaScript-Array
Um ein Element aus einem Array zu entfernen, verwenden Sie die pop()
o splice()
método.
Die folgende Anweisung entfernt zum Beispiel das letzte Element des Arrays activities:
activities.pop();
(index) 0 1 2
0 'Work' 9 '38%'
1 'Programming' 2 '8%'
2 'Eat' 1 '4%'
3 'Commute' 2 '8%'
4 'Play Game' 1 '4%'
5 'Sleep' 7 '29%'
Auf ähnliche Weise können Sie die Elemente aus dem inneren Array des mehrdimensionalen Arrays entfernen, indem Sie die pop()
Methode. Das folgende Beispiel entfernt das Element "percentage" aus den inneren Feldern des Arrays "activities".
activities.forEach((activity) => {
activity.pop(2);
});
(index) 0 1
0 'Work' 9
1 'Programming' 2
2 'Eat' 1
3 'Commute' 2
4 'Play Game' 1
5 'Sleep' 7
Iteration über Elemente des mehrdimensionalen JavaScript-Arrays
Um ein mehrdimensionales Array zu iterieren, verwenden Sie eine verschachtelte for
Schleife wie im folgenden Beispiel.
// loop the outer array
for (let i = 0; i < activities.length; i++) {
// get the size of the inner array
var innerArrayLength = activities[i].length;
// loop the inner array
for (let j = 0; j < innerArrayLength; j++) {
console.log('[' + i + ',' + j + '] = ' + activities[i][j]);
}
}
Die erste Schleife iteriert über die Elemente des äußeren Arrays und die verschachtelte Schleife iteriert über die Elemente des inneren Arrays.
Die folgende Abbildung zeigt die Ausgabe des Skripts in der Konsole:
[0,0] = Work
[0,1] = 9
[1,0] = Eat
[1,1] = 1
[2,0] = Commute
[2,1] = 2
[3,0] = Play Game
[3,1] = 1
[4,0] = Sleep
[4,1] = 7
[5,0] = Study
[5,1] = 2
Oder Sie können die forEach()
Methode zweimal:
activities.forEach((activity) => {
activity.forEach((data) => {
console.log(data);
});
});
Work
9
Eat
1
Commute
2
Play Game
1
Sleep
7
Study
2
26 Stimmen
Ausgehend von einer etwas pedantischen Definition ist es technisch unmöglich, ein 2d-Array in Javascript zu erstellen. Aber Sie können ein Array von Arrays erstellen, die gleichbedeutend mit dem gleichen ist.
0 Stimmen
Duplikat von - stackoverflow.com/q/6495187/104380
0 Stimmen
Für ein 5x3 2D-Array würde ich wie folgt vorgehen
var arr2D = new Array(5).fill(new Array(3));
Wenn Sie außerdem nicht wollen, dass die Zellen "undefiniert" sind, können Sie wie folgt vorgehenvar arr2D = new Array(5).fill(new Array(3).fill("hey"));
22 Stimmen
FYI... wenn Sie ein Array mit weiteren Arrays füllen, indem Sie
var arr2D = new Array(5).fill(new Array(3));
wird jedes Element von Array(5) auf dasselbe Array(3) verweisen. Daher ist es am besten, eine for-Schleife zu verwenden, um die Unterarrays dynamisch zu füllen.91 Stimmen
a = Array(5).fill(0).map(x => Array(10).fill(0))
0 Stimmen
@JoshStribling Können Sie mir bitte erklären, warum es so ist, dass
var arr2D = new Array(5).fill(new Array(3));
nicht richtig ein 2d-Array erstellt?0 Stimmen
@MarksCode Es wird technisch gesehen ein 2D-Array erstellt, aber es wird ein Array sein, das mit Verweisen auf das gleiche einzelne Array gefüllt ist, das Sie mit der
new Array(3)
Aufruf, da dieser ausgeführt wird, um ein neues Array zu erstellen, dann wird dieses Array an die Funktion übergeben, um das Array zu füllen, das Sie füllen...5 Stimmen
Mit anderen Worten,
fill
ruft nichtnew Array(3)
für jeden Index des zu füllenden Arrays, da es sich nicht um einen Lambda-Ausdruck oder ähnliches handelt, wie z.B. Longfei Wus Kommentar oben, der das Array zunächst mit 0's füllt und dann die map-Funktion mit einem Lambda verwendet, um jedes Element mit einem neuen Array zu füllen. Die fill-Funktion füllt das Array einfach mit genau dem, was Sie ihr sagen. Ergibt das einen Sinn? Für weitere Informationen über diemap
Funktion, siehe: developer.mozilla.org/de-US/docs/Web/JavaScript/Reference/0 Stimmen
Mögliches Duplikat von Mehrdimensionales JavaScript-Array
0 Stimmen
@Adam diese Frage scheint zwei Jahre älter zu sein als die Frage, die Sie verlinkt haben.
2 Stimmen
@kalehmann das ist gut: meta.stackoverflow.com/a/252017/2311074
If the new question is a better question or has better answers, then vote to close the old one as a duplicate of the new one.
1 Stimmen
Eine leistungsfähige ist
let AA = Array.from({ length: 2 }, () => new Array(3).fill(0));