1390 Stimmen

Wie kann ich ein zweidimensionales Array in JavaScript erstellen?

Ich habe im Internet nachgelesen, und an einigen Stellen heißt es, es sei nicht möglich, an anderen wird ein Beispiel genannt, und wieder andere widerlegen das Beispiel usw.

  1. Wie deklariere ich ein 2-dimensionales Array in JavaScript? (vorausgesetzt, es ist möglich)

  2. Wie kann ich auf die Mitglieder zugreifen? ( myArray[0][1] o myArray[0,1] ?)

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

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 vorgehen var arr2D = new Array(5).fill(new Array(3).fill("hey"));

15voto

Uchenna Punkte 159

Ich weiß nicht, ob schon jemand darauf geantwortet hat, aber ich fand, dass das bei mir ziemlich gut funktioniert hat -

var array = [[,],[,]]

z. B:

var a = [[1,2],[3,4]]

Für ein 2-dimensionales Array, zum Beispiel.

0 Stimmen

Wie kann ich dies dynamisch tun? Ich möchte die inneren Arrays mit unterschiedlichen Größen.

3 Stimmen

Sie brauchen keine zusätzlichen Kommas var array = [[],[]] angemessen ist.

15voto

Justin Ohms Punkte 2881

Erstellen eines nicht-dichten "2D"-Arrays (x,y), bei dem alle Indizes adressierbar sind und die Werte auf Null gesetzt sind:

let 2Darray = new Array(x).fill(null).map(item =>(new Array(y).fill(null))) 

Bonus "3D" Array (x,y,z)

let 3Darray = new Array(x).fill(null).map(item=>(new Array(y).fill(null)).map(item=>Array(z).fill(null)))

Variationen und Korrekturen hierzu wurden in Kommentaren und an verschiedenen Stellen als Antwort auf diese Frage erwähnt, aber nicht als eigentliche Antwort, daher füge ich sie hier hinzu.

Es ist zu beachten, dass dies (wie die meisten anderen Antworten) eine Zeitkomplexität von O(x*y) hat und daher wahrscheinlich nicht für sehr große Arrays geeignet ist.

1 Stimmen

Seien Sie vorsichtig, denn fill denselben Wert setzen. wenn ändern null zu `Objekt wird es in jeder Spalte das gleiche Objekt sein

0 Stimmen

@StanislavMayorov Wenn Sie den Wert jeder Zelle festlegen möchten, wenden Sie einfach denselben Trick an: let 2Darray = new Array(x).fill(null).map(item =>(new Array(y).fill(null).map(cell =>(yourValueHere))))

13voto

prime Punkte 12730

Um ein 2D-Array in JavaScript zu erstellen, können wir zuerst ein Array erstellen und dann Arrays als dessen Elemente hinzufügen. Diese Methode gibt ein 2D-Array mit der angegebenen Anzahl von Zeilen und Spalten zurück.

function Create2DArray(rows,columns) {
   var x = new Array(rows);
   for (var i = 0; i < rows; i++) {
       x[i] = new Array(columns);
   }
   return x;
}

um ein Array zu erstellen, verwenden Sie diese Methode wie unten beschrieben.

var array = Create2DArray(10,20);

2 Stimmen

Bitte fügen Sie Ihrer Antwort einige erläuternde Informationen hinzu, die zeigen, wie es funktioniert und warum es das Problem löst. Dies wird anderen helfen, die diese Seite in Zukunft finden.

0 Stimmen

Wann würden Sie ein Array benötigen, das mit einer bestimmten Anzahl von Spalten in Javascript vorinitialisiert ist? Sie können auch auf das n-te Element eines []-Arrays zugreifen.

0 Stimmen

Mir ist aufgefallen, dass die Funktion mit dem Großbuchstaben C beginnt, was (nach bestimmten Konventionen) darauf hindeutet, dass es sich um einen Funktionskonstruktor handelt und Sie ihn mit dem Schlüsselwort new verwenden würden. Das ist vielleicht nur eine Kleinigkeit, aber ich würde trotzdem ein Wort ohne Großbuchstaben vorschlagen.

12voto

SridharKritha Punkte 6415

Reihe y Säule Größen eines Array nur auf der Ebene der Betriebszeit dann könnte die folgende Methode zur Erstellung einer dynamische 2d array .

    var num = '123456';
    var row = 3; // Known at run time
    var col = 2; // Known at run time
    var i = 0;

    var array2D = [[]];
    for(var r = 0; r < row; ++r)
    {
        array2D[r] = [];
        for(var c = 0; c < col; ++c)
        {
            array2D[r][c] = num[i++];
        }
    }
    console.log(array2D); 
    // [[ '1', '2' ], 
    //  [ '3', '4' ], 
    //  [ '5', '6' ]]

    console.log(array2D[2][1]); // 6

0 Stimmen

Funktioniert gut, aber sollten nicht Spalte und Zeile vertauscht werden? Ihre visuelle Darstellung scheint gegen die Konvention zu verstoßen, dass Zeilen horizontal und Spalten vertikal sind.

12voto

Tim Hallyburton Punkte 2441

Array Comprehensions verwenden

In JavaScript 1.7 und höher können Sie Array-Begriffe um zweidimensionale Arrays zu erstellen. Außerdem können Sie die Einträge beim Füllen des Arrays filtern und/oder manipulieren und müssen keine Schleifen verwenden.

var rows = [1, 2, 3];
var cols = ["a", "b", "c", "d"];

var grid = [ for (r of rows) [ for (c of cols) r+c ] ];

/* 
         grid = [
            ["1a","1b","1c","1d"],
            ["2a","2b","2c","2d"],
            ["3a","3b","3c","3d"]
         ]
*/

Sie können jede n x m Array und füllen Sie es mit einem Standardwert, indem Sie

var default = 0;  // your 2d array will be filled with this value
var n_dim = 2;
var m_dim = 7; 

var arr = [ for (n of Array(n_dim)) [ for (m of Array(m_dim) default ]] 
/* 
         arr = [
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0],
         ]
*/

Weitere Beispiele und Dokumentationen finden Sie unter aquí .

Bitte beachten Sie, dass dies noch keine Standardfunktion ist. .

0 Stimmen

Ein kurzer Google-Check hier... ja... die for Anweisung ist immer noch eine Schleife...

1 Stimmen

Sie wird von keinem Browser unterstützt - HIER ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X