ゆるくエンジニア日記

職業はシステムエンジニア。日々の学びや感じたことをゆるく記録していきます。

JavaScriptで2次元配列を宣言する方法

JavaScriptで単一の配列は作成することはあったが、2次元配列は意外と少なかった。
今回2次元配列を使おうと思った時に、意外と詰まってしまったので備忘録。

NG例①

最初は以下のように記載していた。

var test = [];
for(let i = 0; i < icnt; i++){
  for(let j = 0; j < jcnt; j++){
    test[i][j] = "hogehoge";
  }
}

ダメだった。どうやらtest[i]に対して、j番目の配列というのがundefinedとして認識されているらしい。
ということは2次元配列として宣言してあげればいけるのか?
と思い試してみたのが以下。

NG例②

var test = [][];
for(let i = 0; i < icnt; i++){
  for(let j = 0; j < jcnt; j++){
    test[i][j] = "hogehoge";
  }
}

今度は構文エラーになる。だめらしい。

調べてみると、以下のようにする必要があるらしい。

OK例

var test = [];
for(let i = 0; i < icnt; i++){
  for(let j = 0; j < jcnt; j++){
    test[i]=[];
    test[i][j] = "hogehoge";
  }
}

なんとなく冗長がするのと、宣言時に2次元配列であることがわからないので若干もやもやするが、、、
でもこれはおそらくJavaに慣れすぎているせいで、JavaScriptに慣れていれば、動的型付けゆえの仕様ということで納得できるか?

ちなみに、宣言部分はnew Arrayでも置き換えできる。

参考リンク

JavaScriptで多次元配列を扱う | プロカツ!