2012-03-15 18 views
19

私は、私のような各次元の長さを取得したいと思いますどのように、固定長の何かのようなのJavaスクリプトでその後2次元配列をjavascriptで宣言するにはどうすればよいですか?

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

を2次元配列を宣言するために知って

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); 

をしたいと思いますどんな助けでも感謝しています。

答えて

30

@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]); 

Live Demo

この方法は、10インデックスとする配列を有することができ、及びarr[5]が1つの値を持つ配列を有することができ、あるいはなどの全く異なるタイプであることがインスタンスarr[4]のために非常に柔軟です文字列または数字。 (undefinedの)

+0

こんにちはLoktar私はデモが好きであり、どのように私は配列の寸法を取得しますか?最初の次元と2番目の次元? –

+1

@Kathy配列の長さが等しいと仮定すると(チェッカーボード8x8と考える)、 'arr.length'と' arr [0] .length'を実行できます。それは "幅"と "高さ" – Loktar

3

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

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

+0

スラークありがとう、どのように私は各次元の長さを得るのですか? –

+2

各寸法の長さはありません。これは単なる配列の配列です。各配列には独自の長さがあります。 – SLaks

+1

_ "Javascriptは多次元配列をサポートしていません" _ - しかし、配列の配列は多次元配列に相当するので、JavaScript DOESは多次元配列をサポートしていると言うことができます。あなたの最初の文がこの形式では正しいとは思えません:))。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Predefined_Core_Objects#Multi-Dimensional_Arrays(私はあなたの答えは本当に質問に答えないと思う。;)) – Sk8erPeter

1

ネストされた3×3アレイは:

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

 
console.log(arr);


modle13はあなたが固定サイズのサブアレイに制限しているとコメントし、ので、ここで迅速な一つですそれを回避するために調整する:

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);
JavaScriptで

+0

私の答えに間違っているでしょうか? – c24w

+0

私の目的のために働く:tic-tac-toe Reactチュートリアル。競合は、各サブ配列について同じ数のインデックスに制限されている可能性があります。 – modle13

2

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]] 
-3

あなたはちょうどこのような何かを行うことができませんでしたか?

var x = new Array(4);    #1st array, array of arrays        
y = new Array(1, 4, 2, 0);  #2nd dimension of arrays, an array of values     
z = new Array(4, 8, 3, 9);  #^^^      
a = new Array(7, 0, 2, 4);  #^^^     
t = new Array(9, 0, 3, 1);  #^^^ 

はその後、アレイ内のアクセス7(第一値)に(3)次のように入力できます。

var example = x.3.1 

これがされたCOSこの文句を言わない仕事は私に教えてください場合私は何を言われたと何イム今私のゲームをプログラムするために使用

+2

err ...これは動作しません。ここであなたが持っているのは、全く関係のない5つの異なる配列です。 –

関連する問題