JavaScript | レベル別練習問題:オブジェクト

JavaScript
スポンサーリンク

今回は「オブジェクトの中にネストされたオブジェクトや配列」があり、条件分岐で状態を更新するケースのステップ実行解説を紹介します。
初心者でもどの条件が評価され、どのプロパティが変化したかを追いやすいように丁寧に表で示します。


練習問題:ネストオブジェクト&配列+条件分岐

let classroom = {
    teacher: { name: "Ms. Smith", active: true },
    students: [
        { name: "Alice", score: 95, passed: false },
        { name: "Bob", score: 62, passed: false },
        { name: "Charlie", score: 78, passed: false }
    ]
};

// 条件分岐で students の合格判定を行う
for (let i = 0; i < classroom.students.length; i++) {
    if (classroom.students[i].score >= 70) {
        classroom.students[i].passed = true;
    }
}

console.log(classroom.students);
JavaScript

出力

[
  { name: "Alice", score: 95, passed: true },
  { name: "Bob", score: 62, passed: false },
  { name: "Charlie", score: 78, passed: true }
]
JavaScript

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

ステップi学生scorepassed条件評価実行ブロック
0Alice95false95 >= 70 → truepassed = true
1Bob62false62 >= 70 → false条件スキップ、passedはfalse
2Charlie78false78 >= 70 → truepassed = true

最終状態(console.log)

[
  { name: "Alice", score: 95, passed: true },
  { name: "Bob", score: 62, passed: false },
  { name: "Charlie", score: 78, passed: true }
]
JavaScript

解説ポイント

  1. classroom.students配列、要素は オブジェクト
  2. for ループで各要素にアクセスし、条件分岐でプロパティを更新
  3. 参照型なので classroom.students[i].passed を変更すると元の配列に反映される
  4. 条件分岐で false の場合は何も変更されない

応用例:ネストされたオブジェクトの複合条件

let classroom = {
    teacher: { name: "Ms. Smith", active: true },
    students: [
        { name: "Alice", score: 95, passed: false, extraCredit: 5 },
        { name: "Bob", score: 62, passed: false, extraCredit: 15 },
        { name: "Charlie", score: 78, passed: false, extraCredit: 0 }
    ]
};

// 合計点で合格判定
for (let i = 0; i < classroom.students.length; i++) {
    let total = classroom.students[i].score + classroom.students[i].extraCredit;
    if (total >= 70) {
        classroom.students[i].passed = true;
    }
}

console.log(classroom.students);
JavaScript

出力

[
  { name: "Alice", score: 95, passed: true, extraCredit: 5 },
  { name: "Bob", score: 62, passed: true, extraCredit: 15 },
  { name: "Charlie", score: 78, passed: true, extraCredit: 0 }
]
JavaScript

ステップ実行

ステップi学生scoreextraCredittotal条件評価passed実行ブロック
0Alice955100100 >= 70 → truefalse → truepassed = true
1Bob62157777 >= 70 → truefalse → truepassed = true
2Charlie7807878 >= 70 → truefalse → truepassed = true

ポイントまとめ

  • ネストされたオブジェクトや配列は、ドット記法でアクセスできる
  • 条件分岐+ループで各要素を更新するときは逐次追跡すると理解しやすい
  • 合格判定やスコア計算など、実務の「複数データの処理」に非常に応用可能
  • 表形式で「変数」「条件」「実行ブロック」を追うと、初心者でもバグの発生箇所がすぐ分かる
タイトルとURLをコピーしました