GameCorder.net

このエントリーをはてなブックマークに追加

5.javascriptの多次元配列

javascriptの多次元配列です。
javaとかcなどとは、書き方が異なるので、注意が必要です。
誤った例です。

function test(){
	var map = [][];		// エラーになる
	map[0][0] = 0;		// エラー
}
		

javaなどでは、多次元配列を[][]で記述していきますが、javascriptではそうもいきません。
[[]]にする必要があります。
サンプルを見ます

function test(){
	var print = function(value){document.write(value)};
	
	// 4*4の2次元配列
	var map = [
	         		[0,0,0,0],
	         		[0,0,0,0],
	         		[0,0,0,0],
	         		[0,0,0,0]
	         ];
	
	for(var i = 0;i < 4;++i){
		for(var j = 0;j < 4;++j){
			print(map[i][j]);
			if(j == 3)
			{
				print("<br>");
			}
		}
	}
}

実行結果

0,0,0,0
0,0,0,0
0,0,0,0
0,0,0,0
		

[]内に[]を入れることで意図したような配列を実現できました。

空の多次元配列の定義

今度は空の状態の多次元配列の定義です。

function test(){
	var print = function(value){document.write(value)};
	// 空で4×4の配列を定義
	var map = [
	           [ , , , ],
	           [ , , , ],
	           [ , , , ],
	           [ , , , ],
	          ];
	// 全てundefinedで表示される
	for(var i = 0;i < 4;++i){
		for(var j = 0;j < 4;++j){
			print(map[i][j]);
			if(j == 3)
			{
				print("<br>");
			}
		}
	}
}

実行結果

undefined * 4
undefined * 4
undefined * 4
undefined * 4
		

値を代入したいときは、forなどで要素を満たします。

親には追加できないが子には追加できる

javascriptでは、親には要素の追加ができませんが、子には追加できます。
どういうことかというと

function test(){
	var print = function(value){document.write(value)};
	// 空で2×2の配列を定義
	var map = [
	           [ , ],
	           [ , ],
	          ];
	// 一次元の配列の要素を4に拡張する
	for(var i = 0;i < 2;++i){
		for(var j = 0;j < 4;++j){
			map[i][j] = i + j;
			print(map[i][j]);
			if(j == 3)
			{
				print("<br>");
			}
		}
	}
	
	// 2次元目の配列を4に拡張する(これはエラーになります)
	for(var i = 0;i < 4;++i){
		for(var j = 0;j < 2;++j){
			map[i][j] = i + j;
			print(map[i][j]);
			if(j == 1)
			{
				print("<br>");
			}
		}
	}
}

実行結果

0123
1234