では今回は「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ステップ実行(逐次追跡)
| i | j | k | 名前 | score | 条件 score>=70 | 条件 score>=90 | passed | honors |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | Alice | 85 | true | false | true | false |
| 0 | 0 | 1 | Bob | 62 | false | false | false | false |
| 0 | 1 | 0 | Charlie | 78 | true | false | true | false |
| 0 | 1 | 1 | David | 55 | false | false | false | false |
| 1 | 0 | 0 | Eve | 92 | true | true | true | true |
| 1 | 0 | 1 | Frank | 68 | false | false | false | false |
解説ポイント
- 三重ループ+オブジェクト更新
- 外側: クラス
- 中: 生徒グループ
- 内側: 個別生徒
- 複合条件で複数プロパティ更新
score >= 70→passed = truescore >= 90→honors = true
- ステップ表の利点
- どの生徒が条件を満たしているか、どのプロパティが変更されたかを逐次確認可能
- 応用
- 実務例:学校成績集計、売上データの階層別フラグ更新、ネストデータの条件付き処理全般
💡 拡張例
- ネストをさらに深くして「課題ごとの点数配列」まで追跡
- 条件を複雑にして「score>=70かつ科目がmathならhonors=true」など
- ステップ表を HTML 表にして色付きで視覚化


