JavaScript | 3次元配列(配列の中の配列の中に配列)

JavaScript JavaScript
スポンサーリンク

ここからは「3次元配列(配列の中の配列の中に配列)」を、初心者向けにわかりやすく、図と例題でじっくり解説します。


3次元配列とは?

イメージからつかもう

「配列の中に配列があり、その中にさらに配列がある」構造です。

たとえるなら:

📦 大きな箱 → 🧺 棚 → 📦 小箱 → 🎁 中身

つまり:

[
  [ [A, B], [C, D] ],
  [ [E, F], [G, H] ]
]
  • 一番外の [ ... ] が「大きな箱」
  • その中に「棚(配列)」があり
  • 棚の中には「小箱(配列)」があり
  • 小箱の中に実際の値が入っています

2次元配列との違い

種類構造イメージ
2次元配列配列の中に配列表(行と列)
3次元配列配列の中に配列の中に配列表がいくつも重なった立体(立方体)

実際のコード例で見てみよう

例1:3×2×2 の配列(数字データ)

let data = [
  [ [1, 2], [3, 4] ],
  [ [5, 6], [7, 8] ],
  [ [9, 10], [11, 12] ]
];
JavaScript

この配列の構造を分解すると:

data = [
  0: [ [1, 2], [3, 4] ],   ← 「第1グループ」
  1: [ [5, 6], [7, 8] ],   ← 「第2グループ」
  2: [ [9, 10], [11, 12] ] ← 「第3グループ」
]
JavaScript

要素にアクセスする

3つのインデックスを使います。

console.log(data[0][0][0]); // 1
console.log(data[0][1][1]); // 4
console.log(data[2][1][0]); // 11
JavaScript

つまり:

data[グループ番号][棚番号][小箱番号]
JavaScript

例2:学校・クラス・生徒のデータ

let school = [
  [ // 1校目
    ['Yamada', 'Suzuki'], // 1組
    ['Tanaka', 'Kobayashi'] // 2組
  ],
  [ // 2校目
    ['Sato', 'Kondo'], // 1組
    ['Honda', 'Inoue'] // 2組
  ]
];
JavaScript

これを図にすると:

school = [
  0: [
      0: ['Yamada', 'Suzuki'],
      1: ['Tanaka', 'Kobayashi']
     ],
  1: [
      0: ['Sato', 'Kondo'],
      1: ['Honda', 'Inoue']
     ]
]
JavaScript

アクセス例:

console.log(school[0][0][1]); // 'Suzuki'(1校目の1組の2人目)
console.log(school[1][1][0]); // 'Honda'(2校目の2組の1人目)
JavaScript

ループで全ての要素を表示する

3次元配列では 三重ループ になります。

for (let i = 0; i < school.length; i++) {          // 学校
  for (let j = 0; j < school[i].length; j++) {     // クラス
    for (let k = 0; k < school[i][j].length; k++) {// 生徒
      console.log(`school[${i}][${j}][${k}] = ${school[i][j][k]}`);
    }
  }
}
JavaScript

出力:

school[0][0][0] = Yamada
school[0][0][1] = Suzuki
school[0][1][0] = Tanaka
...

コツ(初心者向け)

  1. まず2次元配列の理解をしっかり。
    3次元はそれを「もう1段」重ねただけ。
    「表を何枚も重ねた立体」と考えるとわかりやすい。
  2. インデックスの順序を意識する。
    data[学校][クラス][生徒] のように、「階層の順番」に名前をつけると混乱しにくい。
  3. 途中の配列を変数に入れてから扱うと見やすい。 let school1 = school[0]; let class1 = school1[0]; console.log(class1[1]); // 'Suzuki'

練習問題(手を動かす!)

問題1

次の配列から "Honda" を取り出して表示してください。

let school = [
  [ ['Yamada', 'Suzuki'], ['Tanaka', 'Kobayashi'] ],
  [ ['Sato', 'Kondo'], ['Honda', 'Inoue'] ]
];
JavaScript

答え

console.log(school[1][1][0]); // 'Honda'

問題2

次の scores から「クラスごとの合計点」を出して表示してください。

let scores = [
  [ [80, 70], [60, 90] ],
  [ [55, 75], [85, 95] ]
];
JavaScript

答え

for (let i = 0; i < scores.length; i++) {
  for (let j = 0; j < scores[i].length; j++) {
    let sum = 0;
    for (let k = 0; k < scores[i][j].length; k++) {
      sum += scores[i][j][k];
    }
    console.log(`Group ${i}, Class ${j} total = ${sum}`);
  }
}
JavaScript

出力例:

Group 0, Class 0 total = 150
Group 0, Class 1 total = 150
Group 1, Class 0 total = 130
Group 1, Class 1 total = 180

応用のヒント

  • 3次元配列は「立体データ」や「複数グループの表データ」を扱うときに使います。
    例)ゲームマップ、時系列データ、画像のピクセル(RGB)など。
  • 4次元、5次元配列も作れますが、構造が複雑になるので、
    オブジェクトやクラスで表す方が現実的です。

まとめ

ポイント説明
3次元配列配列の中に配列の中に配列
構造data[外側][中間][内側]
利用例学校→クラス→生徒、時系列→日→データなど
ループ処理三重ループ(for ×3)で全要素を処理
コツ一段ずつ変数に取り出して考えると理解しやすい

See the Pen 3D Array Visualization Animation by MONO365 -Color your days- (@monoqlo365) on CodePen.

タイトルとURLをコピーしました