ループ
同じ処理を条件が満たされる間繰り返し実行する制御構造
ループとは
ループ (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
ループの途中で制御を変えるには break と continue を使う。
// 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 には更新処理を必ず書く |
| 配列の変更中にループ | 要素のスキップ | コピーに対してループ |
ループの基礎と応用パターンは関連書籍に詳しい。
この記事は役に立ちましたか?
関連用語
再帰
関数が自分自身を呼び出して問題を解く手法で、木構造やフラクタル的な問題に適する
配列
同じ型のデータを順序つきで格納し、インデックスで要素にアクセスできるデータ構造
Iterator パターン
コレクションの内部構造を公開せずに、要素を順番にアクセスする手段を提供するデザインパターン
スコープ
変数や関数が参照可能な範囲を定義するプログラミングの基本概念
条件分岐とは - if/else/switch の使い分けとネスト回避のコツ
条件分岐は条件の真偽に応じて処理を切り替える制御構造。if 文・switch 文・三項演算子の使い分け、早期リターンによるネスト削減テクニックを解説
WAF
Web アプリケーションファイアウォールで、SQL インジェクションや XSS などの攻撃をフィルタリングする
関連する記事
機械学習・AI 本ガイド - エンジニアが読むべき技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルートと ML 本の賞味期限の見極め方を解説します。
日曜日の午前中に 1 章だけ読む生活
読書習慣がない人でも続けられる、最小限の読書ルーティンを紹介します。日曜の午前中に 1 章だけ。この小さな習慣が、1 年で 50 章分の知識を積み上げます。
寝る前の 10 分間読書が翌朝のコードに効く理由
就寝前の短い読書が記憶の定着と翌日のパフォーマンスに与える影響を、認知科学の知見をもとに解説します。夜型エンジニアでも実践できる、寝る前 10 分の読書習慣。