くり返しとデータの持ち方

INPUT · スライド

forとifと配列を組み合わせよう

01 / 07

3つの道具がそろった

変数・if 文・for 文・配列——道具は全部そろった。

今回は for 文の中に if 文を入れて、「条件に合う要素だけ処理する」を作るよ。検索、絞り込み、集計……アプリの心臓部になるパターンだ。

02 / 07

forの中にifを入れる

形はこう。{ } が二重になるから、インデント(字下げ)で見やすく書くのがコツだよ。

毎周 scores[i] を取り出し、そのたびに if 文で判定する。

let scores = [45, 80, 92, 60];for (let i = 0; i < scores.length; i++) {  if (scores[i] >= 80) {    console.log(scores[i]);  }}

実行結果

80
92

03 / 07

条件に合う要素を数える

「何件あるか」を数えたいときは、カウント用の変数を外に用意して、if の中で 1 ずつ足す。

合計の「ためる変数」パターンの仲間だね。

let scores = [45, 80, 92, 60];let count = 0;for (let i = 0; i < scores.length; i++) {  if (scores[i] >= 80) {    count = count + 1;  }}console.log(count);

実行結果

2

04 / 07

合うものだけ集める

空の配列に push すれば、条件に合う要素だけの新しい配列が作れる。

これが「絞り込み(フィルタ)」。ネットショップの「3000円以下だけ表示」もこの仕組みだよ。

let prices = [1200, 4500, 2800];let cheap = [];for (let i = 0; i < prices.length; i++) {  if (prices[i] <= 3000) {    cheap.push(prices[i]);  }}console.log(cheap);

実行結果

[1200, 2800]

05 / 07

文字の要素でも同じ

数値だけじゃなく、文字の配列でも条件で選べる。

「探す・数える・集める」の3パターン、この後の問題で全部書いてもらうよ。

let animals = ["ねこ", "いぬ", "ねこ", "うさぎ"];for (let i = 0; i < animals.length; i++) {  if (animals[i] === "ねこ") {    console.log(i + "番目にねこ発見");  }}

実行結果

0番目にねこ発見
2番目にねこ発見

06 / 07

含まれているかどうかを調べる

「数える」「集める」の他に、「1件でもあるか」だけを知りたいこともある。真偽値の変数を用意して、見つかったら true にするよ。

件数はいくつでもいい。1件見つかった時点で答えは決まっているのがポイントだよ。

let animals = ["いぬ", "うさぎ", "ねこ"];let found = false;for (let i = 0; i < animals.length; i++) {  if (animals[i] === "ねこ") {    found = true;  }}console.log(found);

実行結果

true

07 / 07

else で2つのグループに分ける

if の else を組み合わせれば、条件に合うものと合わないものを同時に別々の配列へ振り分けられる。

テストの合格者・不合格者を分ける、といった処理がこの形で書けるよ。

let scores = [45, 80, 92, 60];let pass = [];let fail = [];for (let i = 0; i < scores.length; i++) {  if (scores[i] >= 60) {    pass.push(scores[i]);  } else {    fail.push(scores[i]);  }}console.log(pass);console.log(fail);

実行結果

[80, 92, 60]
[45]