web-dev-qa-db-ja.com

javascriptで2次元配列を宣言するにはどうすればよいですか?

Javaのような固定長のスクリプトのような2次元配列を宣言する方法を知りたい、

var array = new Array[this.rows, this.columns];

その後、各次元の長さを取得したいのですが、

array[0].length; // i am assuming this would give me the first dimension like in C# array.GetLength(0);
array[1].length; // i am assuming this would give me the second dimension like in C# array.GetLength(1);

どんな助けでも感謝します。

21
user677607

@SLaksがギザギザの配列で参照しているものの簡単な例。基本的に、配列に配列を配置します。以下の例は、100x100の配列を作成する1つの方法を示しています。

var arr = [];
for(var x = 0; x < 100; x++){
    arr[x] = [];    
    for(var y = 0; y < 100; y++){ 
        arr[x][y] = x*y;    
    }    
}

console.log(arr[10][11]);

ライブデモ

このメソッドは、_arr[4]は、10にインデックス付けされた配列を持つことができ、arr[5]は、1つの値を持つ配列を持つことも、文字列や数値などの完全に異なる型にすることもできます。

34
Loktar

undefinedの)ネストされた3x3配列:

var arr = new Array(3);
for (var i = 0; i < arr.length; ++i) {
  arr[i] = new Array(3);
}

console.log(arr);

modle13は、固定サイズのサブ配列に制限されているとコメントしているため、これを回避するための簡単な調整を1つ示します。

var nestedSizes = [3,5,1,4];
var arr = new Array(nestedSizes.length);
for (var i = 0; i < arr.length; ++i) {
  arr[i] = new Array(nestedSizes[i]);
}

console.log(arr);
4
c24w

C#とは異なり、Javascriptは多次元配列をサポートしていません。

代わりに、ネストされた(「ギザギザ」)配列を使用できます。

2
SLaks

Javascriptの場合:

var Matrix = function (rows, columns)  {
    this.rows = rows;
    this.columns = columns;
    this.myarray = new Array(this.rows);
    for (var i=0; i < this.columns; i +=1) {
        this.myarray[i]=new Array(this.rows)
    }
    return this.myarray;
}

var m = new Matrix(2,2);
m; // [[undefined, undefined], [undefined, undefined]];

var m2 = new Matrix(3,3);
m2; // [[undefined, undefined, undefined], [undefined, undefined, undefined], [undefined, undefined, undefined]]
2
antonjs