メインコンテンツまでスキップ

ループ処理

同じ処理を繰り返し実行するための構文です。

for ループ

// 基本的な for ループ
for (let i = 0; i < 5; i++) {
console.log(`カウント: ${i}`);
}

for ループは「初期化式・条件式・更新式」の 3 つで構成されます。

for (初期化式; 条件式; 更新式) {
// 繰り返し実行する処理
}

break と continue

ループの途中で抜けたり、特定の回をスキップしたりできます。

for (let i = 0; i < 10; i++) {
if (i === 5) break; // i が 5 になったらループを抜ける
if (i % 2 === 0) continue; // 偶数のときは以降をスキップ
console.log(i); // 1, 3 (5 で停止)
}

while ループ

let count = 0;
while (count < 5) {
console.log(`while ループ: ${count}`);
count++;
}

do-while ループ

条件を後で評価するため、最低 1 回は実行されます。

let num = 0;
do {
console.log(`do-while ループ: ${num}`);
num++;
} while (num < 5);

for...of ループ(イテラブルオブジェクト用)

配列や文字列などの反復可能なオブジェクトに対して使用します。

const colors = ["赤", "緑", "青"];

for (const color of colors) {
console.log(color); // 赤, 緑, 青
}

インデックスも欲しいとき

entries() を使うと [インデックス, 値] のペアを取り出せます。[index, color] は配列を分解して受け取る書き方で、詳しくは 配列 で扱います。

const colors = ["赤", "緑", "青"];

for (const [index, color] of colors.entries()) {
console.log(`${index}: ${color}`); // 0: 赤, 1: 緑, 2: 青
}

for...in ループ(オブジェクト用)

オブジェクトのプロパティ(キー)を反復処理します。

const person = {
name: "佐藤",
age: 25,
job: "エンジニア"
};

for (const key in person) {
console.log(`${key}: ${person[key]}`);
}
for...in は配列に使わない

for...in はオブジェクトのキーを列挙しますが、プロトタイプから継承したプロパティも拾ってしまう うえ、インデックスが数値ではなく文字列になるという特性があります。配列の反復には for...of、または forEach などの高階関数を使いましょう。

使い分けの目安

構文向いている用途
for回数が決まっている、インデックスを細かく制御したい
while終了条件が回数で決まらない
for...of配列・文字列など値を 1 つずつ取り出す
for...inオブジェクトのキーを列挙する

次に読む

  • 関数 — 繰り返し使う処理を「関数」としてまとめる