15 / 2755%

LESSON 15 ・ 配列

配列とwhile

要素を更新する

let a = [65, 90, 85];

console.log(a[0]);
console.log(a[1]);
console.log(a[2]);

a[0] = 67;

console.log(a[0]);

a[0] = 67のように、インデックスを指定して特定の要素だけ更新することもできます。

ループですべての要素を処理する

let a = [65, 90, 85];

let i = 0;
while (i < 3) {
  console.log(a[i]);
  i += 1;
}

配列を使えばループと組み合わせて処理することができます。a[i]のように[ ]の中に変数を使うことができるので、ループで変数の値を1ずつ増やしながら処理することができるからです。

このiのように、ループの制御に使う変数をループ変数と呼ぶことがあります。ループ変数にはindexの頭文字を取ってよくiが使われます。

要素数に合わせて繰り返す

let a = [65, 90, 85];
console.log(a.length);

i < 3のように、人数をコード中にベタ書き(ハードコード)してしまうと、人数が増えたときにコードも修正しなければなりません。lengthを使えば配列の長さ(要素数)を得ることができます。この例では3が出力されます。

let a = [65, 90, 85];
let n = a.length;

let i = 0;
while (i < n) {
  console.log(a[i]);
  i += 1;
}

要素数を使えば、さっきのループのコードはこのように書き換えられます。

let a = [65, 90, 85];

let i = 0;
while (i < a.length) {
  console.log(a[i]);
  i += 1;
}

要素数を変数に代入せず、条件式に直接書くこともできます。

PRACTICE

演習問題

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

問題1

点数659085をまとめた配列の最初の要素を70に更新し、更新後の値を表示してください。

答えと解説を見る

模範解答

let scores = [65, 90, 85];
scores[0] = 70;
console.log(scores[0]);

インデックス0を指定して代入すると、最初の要素だけを更新できます。

問題2

[4, 8, 12, 16]のすべての要素を、whileを使って順番に表示してください。繰り返す回数は要素数から求めてください。

答えと解説を見る

模範解答

let numbers = [4, 8, 12, 16];

let i = 0;
while (i < numbers.length) {
  console.log(numbers[i]);
  i += 1;
}

ループ変数iをインデックスとして使います。numbers.lengthまで繰り返すため、要素数を変えても同じコードで処理できます。

問題3

点数607590をまとめた配列があります。whileを使って、すべての点数を5ずつ増やし、更新後の値を順番に表示してください。

答えと解説を見る

模範解答

let scores = [60, 75, 90];

let i = 0;
while (i < scores.length) {
  scores[i] += 5;
  console.log(scores[i]);
  i += 1;
}

scores[i]を使うと、ループのたびに異なる要素を更新できます。表示される値は658095です。