JavaScript | レベル別練習問題:配列

JavaScript
スポンサーリンク

では今回は「3次元配列+条件付き複数プロパティ更新」の例を作り、ステップ実行で配列・オブジェクトの状態を逐次追跡します。
実務での複雑データ(例:学校→クラス→生徒→課題点数やフラグ管理)に近いイメージです。


練習問題:3次元配列内のオブジェクトの条件付き更新

let school = [
    [ // クラス1
        [ // 生徒1
            { name: "Alice", score: 85, passed: false, honors: false },
            { name: "Bob", score: 62, passed: false, honors: false }
        ],
        [ // 生徒2
            { name: "Charlie", score: 78, passed: false, honors: false },
            { name: "David", score: 55, passed: false, honors: false }
        ]
    ],
    [ // クラス2
        [ // 生徒3
            { name: "Eve", score: 92, passed: false, honors: false },
            { name: "Frank", score: 68, passed: false, honors: false }
        ]
    ]
];

// 条件付きで複数プロパティを更新
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++) { // 個別生徒
            let student = school[i][j][k];
            if (student.score >= 70) {
                student.passed = true;
                student.honors = student.score >= 90 ? true : false;
            } else {
                student.passed = false;
                student.honors = false;
            }
        }
    }
}

console.log(school);
JavaScript

出力

[
  [
    [
      { name: "Alice", score: 85, passed: true, honors: false },
      { name: "Bob", score: 62, passed: false, honors: false }
    ],
    [
      { name: "Charlie", score: 78, passed: true, honors: false },
      { name: "David", score: 55, passed: false, honors: false }
    ]
  ],
  [
    [
      { name: "Eve", score: 92, passed: true, honors: true },
      { name: "Frank", score: 68, passed: false, honors: false }
    ]
  ]
]
JavaScript

ステップ実行(逐次追跡)

ijk名前score条件 score>=70条件 score>=90passedhonors
000Alice85truefalsetruefalse
001Bob62falsefalsefalsefalse
010Charlie78truefalsetruefalse
011David55falsefalsefalsefalse
100Eve92truetruetruetrue
101Frank68falsefalsefalsefalse

解説ポイント

  1. 三重ループ+オブジェクト更新
    • 外側: クラス
    • 中: 生徒グループ
    • 内側: 個別生徒
  2. 複合条件で複数プロパティ更新
    • score >= 70passed = true
    • score >= 90honors = true
  3. ステップ表の利点
    • どの生徒が条件を満たしているか、どのプロパティが変更されたかを逐次確認可能
  4. 応用
    • 実務例:学校成績集計、売上データの階層別フラグ更新、ネストデータの条件付き処理全般

💡 拡張例

  • ネストをさらに深くして「課題ごとの点数配列」まで追跡
  • 条件を複雑にして「score>=70かつ科目がmathならhonors=true」など
  • ステップ表を HTML 表にして色付きで視覚化
タイトルとURLをコピーしました