Frage Wie kann ich ein zweidimensionales Array in JavaScript erstellen?


Ich habe online gelesen und einige Orte sagen, dass es nicht möglich ist, manche sagen es ist und geben dann ein Beispiel und andere widerlegen das Beispiel usw.

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

  2. Wie würde ich auf seine Mitglieder zugreifen? (myArray[0][1] oder myArray[0,1]?)


918
2018-06-08 18:24


Ursprung


Antworten:


var items = [
  [1, 2],
  [3, 4],
  [5, 6]
];
console.log(items[0][0]); // 1
console.log(items);


1062
2018-06-08 18:27



Sie machen einfach jedes Element innerhalb des Arrays zu einem Array.

var x = new Array(10);
for (var i = 0; i < 10; i++) {
  x[i] = new Array(20);
}
x[5][12] = 3.0;

374
2018-06-08 18:28



Ähnlich der Antwort von activa, hier ist eine Funktion zum Erstellen eines n-dimensionalen Arrays:

function createArray(length) {
    var arr = new Array(length || 0),
        i = length;

    if (arguments.length > 1) {
        var args = Array.prototype.slice.call(arguments, 1);
        while(i--) arr[length-1 - i] = createArray.apply(this, args);
    }

    return arr;
}

createArray();     // [] or new Array()

createArray(2);    // new Array(2)

createArray(3, 2); // [new Array(2),
                   //  new Array(2),
                   //  new Array(2)]

163
2018-06-08 20:49



Javascript hat nur 1-dimensionale Arrays, aber Sie können Arrays von Arrays erstellen, wie andere darauf hingewiesen haben.

Die folgende Funktion kann verwendet werden, um ein zweidimensionales Array mit festen Dimensionen zu erstellen:

function Create2DArray(rows) {
  var arr = [];

  for (var i=0;i<rows;i++) {
     arr[i] = [];
  }

  return arr;
}

Die Anzahl der Spalten ist nicht wirklich wichtig, da die Größe eines Arrays vor der Verwendung nicht angegeben werden muss.

Dann können Sie einfach anrufen:

var arr = Create2DArray(100);

arr[50][2] = 5;
arr[70][5] = 7454;
// ...

65
2018-06-08 18:32



Der einfachste Weg:

var myArray = [[]];

59
2018-01-22 18:47



Der Grund, warum einige sagen, dass dies nicht möglich ist, liegt darin, dass ein zweidimensionales Array eigentlich nur ein Array von Arrays ist. Die anderen Kommentare hier bieten vollkommen gültige Methoden zum Erstellen zweidimensionaler Arrays in JavaScript, aber die reinste Sichtweise wäre, dass Sie ein eindimensionales Array von Objekten haben, jedes dieser Objekte wäre ein eindimensionales Array, das aus zwei Elementen besteht.

Also, das ist die Ursache der widersprüchlichen Sichtweisen.


41
2018-06-08 18:33



Wenige Leute zeigen die Verwendung von Push:
Um etwas Neues zu bringen, zeige ich Ihnen, wie Sie die Matrix mit einem Wert initialisieren, zB: 0 oder eine leere Zeichenkette "".
Wenn Sie ein Array mit 10 Elementen haben, wird in JavaScript der letzte Index 9 sein!

function matrix( rows, cols, defaultValue){

  var arr = [];

  // Creates all lines:
  for(var i=0; i < rows; i++){

      // Creates an empty line
      arr.push([]);

      // Adds cols to the empty line:
      arr[i].push( new Array(cols));

      for(var j=0; j < cols; j++){
        // Initializes:
        arr[i][j] = defaultValue;
      }
  }

return arr;
}

Anwendungsbeispiele:

x = matrix( 2 , 3,''); // 2 lines, 3 cols filled with empty string
y = matrix( 10, 5, 0);// 10 lines, 5 cols filled with 0

25
2017-08-08 02:22



Zweiliner:

var a = []; 
while(a.push([]) < 10);

Es erzeugt ein Array a der Länge 10, gefüllt mit Arrays. (Push fügt ein Element zu einem Array hinzu und gibt die neue Länge zurück)


22
2018-05-26 10:00



Der einfachste Weg:

var arr  = [];

var arr1 = ['00','01'];
var arr2 = ['10','11'];
var arr3 = ['20','21'];

arr.push(arr1);
arr.push(arr2);
arr.push(arr3);

alert(arr[0][1]); // '01'
alert(arr[1][1]); // '11'
alert(arr[2][0]); // '20'

16
2017-12-27 08:59