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でも置き換えできる。