ループ
同じ処理を条件が満たされる間繰り返し実行する制御構造
ループとは
ループ (Loop) は、同じ処理を繰り返し実行する制御構造である。配列の全要素に対する処理、一定回数の繰り返し、条件を満たす間の継続実行など、プログラミングの基本操作を担う。
for ループ
回数が決まっている繰り返しには for を使う。
for (let i = 0; i < 5; i++) {
console.log(i); // 0, 1, 2, 3, 4
}
for の丸括弧に書くのは「初期化」「条件判定」「更新」の 3 つの式で、処理そのものは波括弧の中に書く。初期化は最初の 1 回だけ実行され、以降は 条件判定 → 処理 → 更新 を条件が偽になるまで繰り返す。更新式が処理の後に走る点を押さえておくと、continue したときに更新が飛ばされないことも理解しやすい。
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 | 各要素への副作用処理 (中断・待機はできない) |
forEach には 2 つの制約がある。break でループを抜けられないこと、そしてコールバックを async にしても呼び出し側が完了を待たないことである。後者は「ループの後に書いた処理が、各要素の非同期処理より先に走る」という形で表面化する。中断したい、あるいは 1 件ずつ待ちながら処理したい場合は for...of を使う。
よくある間違い
| 間違い | 問題 | 対策 |
|---|---|---|
| off-by-one エラー | 1 回多い/少ない | 境界値をテスト |
| ループ変数の更新忘れ | 無限ループ | while には更新処理を必ず書く |
| 配列の変更中にループ | 要素のスキップ | コピーに対してループ |
ループの基礎と応用パターンは関連書籍に詳しい。
この記事は役に立ちましたか?
関連用語
再帰
関数が自分自身を呼び出して問題を解く手法で、木構造やフラクタル的な問題に適する
配列
複数のデータを順序つきで格納し、インデックスで要素にアクセスできるデータ構造
Iterator パターン
コレクションの内部構造を公開せずに要素へ順番にアクセスする手段を提供するデザインパターン。JavaScript の Iterator プロトコル / Generator / Async Iterator と遅延評価の落とし穴を解説
高階関数
関数を引数に取る、または関数を返す関数で、関数型プログラミングの基本概念
スタック
後入れ先出し (LIFO) でデータを管理する基本データ構造
SQS FIFO キュー
メッセージの順序保証と厳密な 1 回配信を提供する Amazon SQS のキュータイプ
関連する記事
ディープラーニング本の選び方 - 原理 / 理論 / 実装 / 数学の 4 系統で整理 (2026 年 8 月時点)
ディープラーニング本の選び方を 4 系統 (原理を手で理解する本 / 理論を体系的に学ぶ本 / フレームワーク実装本 / 数学を補う本) に整理。2026 年 8 月時点の定番書を目的別 / レベル別に紹介し、賞味期限の見極め方も解説します。
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化と原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。
機械学習 / ディープラーニング本ガイド - エンジニアが読むべき AI 技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルート、ディープラーニング本への進み方、ML 本の賞味期限の見極め方を解説します。