【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文を重ねた書き方と合わせる用法は頻出するので、しっかり構造や処理を理解しましょう。

multidim thumb

役に立ったらシェアしよう!