質問: parseInt(prompt('変更後の点数を入力してください')); } ``` studentsが2人でそれぞれ[Aさん、Bさん][10点、20点]と入力し、 上記のコードでAさんの点数を100点に変更しようとして studentArrayとscoreArrayをconsoleで出力してみると [Aさん、Bさん][10点、100点]; とBさんの点数が変更されてしまいます。 対処方法がわかりません。 よろしくお願いします。
回答: 今のコードでは、`students == studentsArray.length + i`が成り立つ時にメニューが表示されるようになっていますが`studentsArray`の長さは1なので、`i === students - 1`となり常に最後の学生に対して修正処理が行われるようになっています。 おそらくやりたいことは次のように最初の入力処理が終わったら一旦ループを閉じ、新たにメニューを表示するループを開始することではないでしょうか。(概略のみにとどめています) ``` for (let i = 0; i < students; i++) { // 最初の入力処理 } // メニュー表示のループ while (true) { var menu = parseInt(prompt('1:修正 2:平均点 3:最高点 0:終了')); if (menu === 1) { studentName = prompt('変更したい生徒の名前を入力してください'); // 名前studentNameであるような学生のインデックスを探す for (let i = 0; i < students; i++) { if (studentName == nameArray[i]) { scoreArray[i] = parseInt(prompt('変更後の点数を入力してください')); } } } // menu === 2,3の場合 } else if (menu === 0) { alert('終了します'); break; } } ```