16 / 2759%

LESSON 16 ・ 配列

配列とfor...of

for...ofで要素を取り出す

let a = [65, 90, 85];

for (const b of a) {
  console.log(b);
}

whileとループ変数を使って配列の各要素にアクセスすることもできますが、これは頻繁に行われる処理なので、もっと便利な手段が用意されています。それがfor...ofです。

for...ofを使うと、配列の各要素を順番に取り出して処理することができます。この場合、aの要素が一つずつ順番に取り出されbに格納されてからブロックの内容が繰り返し実行されます。

let scores = [65, 90, 85];

for (const score of scores) {
  console.log(score);
}

平均点を計算する

let scores = [65, 90, 85];

let total = 0;
for (const score of scores) {
  total += score;
}

console.log(total / scores.length);

for...ofを使うと、平均点を計算する処理は上記のように書けます。

このように、ループと配列を使えば、たとえ10000人の平均点を計算するコードでも簡単に書くことができます。

PRACTICE

演習問題

コードを自分で書いて実行してから、答えと解説を確認しましょう。

問題1

点数659085をまとめた配列から、for...ofですべての要素を順番に表示してください。

答えと解説を見る

模範解答

let scores = [65, 90, 85];

for (const score of scores) {
  console.log(score);
}

要素が一つずつscoreに入り、そのたびにブロックが実行されます。インデックスを自分で管理する必要はありません。

問題2

[3, 5, 7, 9]のすべての要素を足し、合計を表示してください。

答えと解説を見る

模範解答

let numbers = [3, 5, 7, 9];
let total = 0;

for (const number of numbers) {
  total += number;
}

console.log(total);

取り出した要素を順番にtotalへ足します。ループの後では、合計の24が保存されています。

問題3

点数45728859のうち、59より大きい点数がいくつあるか数えて表示してください。

答えと解説を見る

模範解答

let scores = [45, 72, 88, 59];
let passed = 0;

for (const score of scores) {
  if (score > 59) {
    passed += 1;
  }
}

console.log(passed);

各要素をifで調べ、条件を満たすたびにpassed1増やします。該当する点数は7288なので、2が表示されます。