01 / 06
くり返しとデータの持ち方
INPUT · スライド
forとif-elseと配列を組み合わせよう
02 / 06
forの中のif-else
毎周、要素が if 側か else 側のどちらか必ず一方を通る。
だから出力の行数は要素数と同じになる。「全員に判定を返す」イメージだね。
let scores = [45, 80, 92];for (let i = 0; i < scores.length; i++) { if (scores[i] >= 60) { console.log("合格"); } else { console.log("不合格"); }}実行結果
不合格 合格 合格
03 / 06
要素と判定をセットで表示
要素の値と判定結果を連結すれば、成績表のような出力が作れる。
誰の結果かわかるようにするのは、画面表示の基本だよ。
let scores = [45, 80];for (let i = 0; i < scores.length; i++) { if (scores[i] >= 60) { console.log(scores[i] + "点: 合格"); } else { console.log(scores[i] + "点: 不合格"); }}実行結果
45点: 不合格 80点: 合格
04 / 06
2つの配列に振り分ける
空の配列を2つ用意して、if 側と else 側でそれぞれに push すれば、データの仕分けができる。
メールの受信箱と迷惑メールフォルダの振り分けも、原理はこれと同じ。
let nums = [3, 8, 5, 2];let even = [];let odd = [];for (let i = 0; i < nums.length; i++) { if (nums[i] % 2 === 0) { even.push(nums[i]); } else { odd.push(nums[i]); }}console.log(even);console.log(odd);実行結果
[8, 2] [3, 5]
05 / 06
入れ物はループの外で作る
振り分け先の配列やカウンターは、必ずループの外で用意しよう。
中で作ると1周ごとに空っぽに戻ってしまって、最後の1件しか残らない。「なぜか1件しか入っていない」というときは、まずここを疑ってみて。
06 / 06
両方数えて確かめる
振り分けたあとは、2つを足すと元の件数になるかを確かめるといいよ。
if-else は必ずどちらか一方を通るので、合計は必ず元の要素数と一致するはず。合わないなら、条件か push の書き場所がまちがっている。
こういう「答え合わせの方法を持っておく」のは、プログラムを書くうえでとても役に立つ習慣だよ。
let nums = [3, 8, 5, 2];let even = [];let odd = [];for (let i = 0; i < nums.length; i++) { if (nums[i] % 2 === 0) { even.push(nums[i]); } else { odd.push(nums[i]); }}console.log(even.length + odd.length);console.log(nums.length);実行結果
4 4