【Javascript】多次元配列でトラブった&解決記


(2012-10-10)
コメントでの助言を参考に、記事を若干修正しました。
コメント欄もご覧ください。


結論
たとえば、ニ次元配列のニ次元目にいきなり値を格納する場合、
ひとつの次元ごとに配列の宣言をしなくてはならないようです。


(追記:2009/12/23)
Javascriptでは、『配列の配列』は可能ですが、多次元配列はサポートされていないそうです。
そのせいですね。
(→ 『オライリー・ジャパン JavaScript 第5版』p.35 より)


基本

失敗

var hoge = [];
hoge[0][0] = 'aaa';

alert(hoge[0][0]); //エラー : hoge[0] is undifined


成功

  1. var hoge = [];
    hoge[0] = [];
    hoge[0][0] = 'aaa';

    alert(hoge[0][0]); //'aaa'


  2. var hoge = [];
    hoge[0] = ['aaa', 'bbb', 'ccc'];

    alert(hoge[0][0]); //'aaa'


  3. var hoge = [ ['aaa', 'bbb', 'ccc'], [ ], [ ] ];

    alert(hoge[0][0]); //'aaa'


実際のトラブル例

for文を重ねたコードの中で多次元配列に値を格納しようとしましたが、
何度やってもエラーになってしまいました。


失敗

var hoge = [];
for(i=0; i<3; i++){
for(j=0; j<3; j++){
hoge[i][j] = 'aaa';
}
}

alert(hoge[0][0]); //エラー


成功

var hoge = [];
for(i=0; i<3; i++){
hoge[i] = [];
for(j=0; j<3; j++){
hoge[i][j] = 'aaa';
}
}

alert(hoge[0][0]); //'aaa'



鼻息荒く、大急ぎで報告の記事を書きましたが…、
これって、常識だったんでしょうか?
独学で突き進むしかない貧乏&孤独PGは、いつも不安です…orz