【Javascript】 多次元配列 – プログラミング入門
配列の要素として配列を持つことができます。このような構造は多次元配列と呼ばれます。
多次元配列とは
今までの配列は、1次元の配列です。

多次元配列では、次のようなイメージで配列の中に配列を入れます。

多次元配列の扱い
宣言と要素の取得
多次元配列は、このように作成と取得をします。
let x = [[11, 12, 13], [21, 22, 23], [31, 32, 33]]; // 改行した場合 let y = [ [11, 12, 13], [21, 22, 23], [31, 32, 33] ]; console.log(x[0]); console.log(x[1][2]);
[ 11, 12, 13 ] 23
x[0]
には[11, 12, 13]
という要素が入っています。これは配列ですね。
x[1][2]
は、x[1]
の要素である[21, 22, 23]
から、2番のインデックスを指定して23
を取得しています。
配列の中に配列なら2次元、その中に更に配列があれば3次元配列です。ただ、3次元まで来ると慣れている人でもコードの解読に時間がかかったりするので、基本的には2次元までに抑えましょう。
ここで、多次元配列は要素数が揃っている必要性はありません。
let x = [[1], [3, 4], [7, 8, 9]]
のように、要素数がバラバラでも大丈夫です。
C言語の普通の配列では長さを揃える必要があります。言語にもよりますが、C言語が特殊なだけで、ほとんどの言語では縛りがありません。
代入
配列のときと同様に、要素を指定して代入します。
let x = [[100, 200, 300], [22, 33, 44], [90, 80, 70]]; x[0][1] = 999; x[1] = [9, 8, 7]; x[2] = 5; console.log(x);
[ [ 100, 999, 300 ], [ 9, 8, 7 ], 5 ]
x[2]
に至っては、もとは配列だった部分に普通の整数を代入していますが、Javascriptの場合は問題ありません。しかし、混乱のもとになるので極力避けましょう。
for文で処理
ここで、配列はfor文と相性が良いのですが、多次元配列ではそのfor文を重ねることで処理しやすくなります。
let x = [[11, 12, 13], [21, 22, 23], [31, 32, 33]]; for (let i = 0; i < x.length; i++) { for (let j = 0; j < x[i].length; j++) { // x[i].lengthとすることで、内側の要素数がバラバラでも対処できるようにしている console.log(x[i][j]); } }
11 12 13 21 22 23 31 32 33
このように、forを重ねることで、ループの中でループしています。
まとめ
多次元配列は、配列の要素として配列を入れたものです。非常に重要なデータ構造で、for文を重ねた書き方と合わせる用法は頻出するので、しっかり構造や処理を理解しましょう。
