ループ

同じ処理を条件が満たされる間繰り返し実行する制御構造

プログラミング基礎

ループとは

ループ (Loop) は、同じ処理を繰り返し実行する制御構造である。配列の全要素に対する処理、一定回数の繰り返し、条件を満たす間の継続実行など、プログラミングの基本操作を担う。

for ループ

回数が決まっている繰り返しには for を使う。

for (let i = 0; i < 5; i++) {
  console.log(i); // 0, 1, 2, 3, 4
}

for は「初期化 → 条件判定 → 処理 → 更新」の 4 ステップを 1 行で表現する。

for...of ループ

配列やイテラブルの要素を順に取り出すには for...of を使う。

const fruits = ["apple", "banana", "cherry"];
for (const fruit of fruits) {
  console.log(fruit);
}

インデックスが不要な場合は for...of のほうが簡潔で読みやすい。

while ループ

繰り返し回数が事前にわからない場合は while を使う。

let count = 0;
while (count < 10) {
  count += Math.floor(Math.random() * 3);
}
console.log(`結果: ${count}`);

条件が最初から偽の場合、while の中身は一度も実行されない。

do...while ループ

最低 1 回は実行したい場合は do...while を使う。

let input: string;
do {
  input = prompt("yes と入力してください") ?? "";
} while (input !== "yes");

ループの比較

種類 用途 特徴
for 回数が決まっている インデックスを使える
for...of 配列の要素を順に処理 簡潔で読みやすい
while 条件が満たされる間 回数不定の繰り返し
do...while 最低 1 回は実行 条件判定が後

break と continue

ループの途中で制御を変えるには breakcontinue を使う。

// break: ループを途中で抜ける
for (const item of items) {
  if (item === target) {
    console.log("見つかった");
    break;
  }
}

// continue: 残りの処理をスキップして次の繰り返しへ
for (const num of numbers) {
  if (num < 0) continue; // 負の数はスキップ
  console.log(num);
}

無限ループ

条件が常に真のループは無限ループになる。意図的に使う場合は break で脱出条件を明示する。

// 意図的な無限ループ
while (true) {
  const event = await getNextEvent();
  if (event.type === "shutdown") break;
  processEvent(event);
}

意図しない無限ループはプログラムがフリーズする原因になる。ループ変数の更新忘れや、条件式の誤りが主な原因である。

配列メソッドとの使い分け

JavaScript / TypeScript では、配列メソッドがループの代替になる場合が多い。

const numbers = [1, 2, 3, 4, 5];

// ループ
const doubled: number[] = [];
for (const n of numbers) {
  doubled.push(n * 2);
}

// 配列メソッド (同じ結果)
const doubled2 = numbers.map(n => n * 2);
方法 適するケース
for ループ 途中で break したい、副作用がある
map / filter 変換・抽出、関数型スタイル
reduce 集約 (合計、グルーピング)
forEach 副作用のみ (非推奨寄り)

よくある間違い

間違い 問題 対策
off-by-one エラー 1 回多い/少ない 境界値をテスト
ループ変数の更新忘れ 無限ループ while には更新処理を必ず書く
配列の変更中にループ 要素のスキップ コピーに対してループ

ループの基礎と応用パターンは関連書籍に詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事