Topiqlo ロゴ

繰り返し

公開日: 2025/06/02

繰り返し処理とは?ループを使って効率的に同じ処理を行う方法

はじめに

プログラムでは、「同じ処理を何度も行いたい」という場面が頻繁に登場します。たとえば、配列の中身を順に表示したり、1から10までの数字を加算したりする処理などです。こうした繰り返しの処理を効率的に行うために用意されているのが「繰り返し(ループ)構文」です。本記事では、JavaScriptを中心に、代表的な繰り返し文とその使い方、注意点などを紹介します。

基本情報・概要

繰り返し(ループ)とは、同じ処理を一定回数または条件が満たされるまで実行する構文です。主な種類には以下のようなものがあります。

  • for
    :決まった回数のループ
  • while
    :条件がtrueの間繰り返す
  • do...while
    :最低1回は実行されるループ
  • for...of
    :配列や文字列などの反復可能オブジェクト向け
  • forEach
    :配列向けのメソッド的ループ

比較・分類・特徴の表形式まとめ

構文特徴使用例
for回数が決まっているループ
for (let i = 0; i < 5; i++)
while条件がtrueの間ループを継続
while (条件)
do...while条件にかかわらず最低1回は実行
do { ... } while (条件)
for...of配列や文字列の要素を順に処理
for (const val of arr)
forEach配列に対して関数を適用
arr.forEach(item => ...)

深掘り解説

for文(もっとも基本的なループ)

for (let i = 0; i < 5; i++) {
    console.log(i); // 0〜4が出力される
}

初期化・条件・更新という3つの要素があり、最も柔軟性のある構文です。

while文とdo...while文

let count = 0;
while (count < 3) {
    console.log(count);
    count++;
}

let n = 0;
do {
    console.log(n);
    n++;
} while (n < 3);

while
は最初に条件を判定し、
do...while
は後判定です。

for...of(ES6以降)

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

反復可能(iterable)なオブジェクトに使える簡潔な構文です。

forEach(配列専用)

const names = ["Taro", "Hanako"];
names.forEach(name => {
    console.log(name);
});

break
continue
が使えない点には注意が必要です。

応用・発展的な使い方

ネストされたループ

ループ内にループを組み合わせることで、多次元データを処理できます。

const matrix = [
    [1, 2],
    [3, 4]
];

for (let i = 0; i < matrix.length; i++) {
    for (let j = 0; j < matrix[i].length; j++) {
        console.log(matrix[i][j]);
    }
}

continue / break を使った制御

for (let i = 0; i < 5; i++) {
    if (i === 2) continue; // スキップ
    if (i === 4) break;    // 中断
    console.log(i);
}

再帰との使い分け

ループと再帰(関数の中で自分を呼び出す)は構造上似ていますが、明確な終了条件を持つ繰り返しにはループの方が一般的です。

よくある誤解と注意点

  • 無限ループに注意(条件式が変化しない場合)

  • forEach
    await
    break
    を使えないため非同期処理に不向き

  • 配列に

    for...in
    を使うと意図しないプロパティまで列挙される可能性あり

    const arr = ["a", "b"]; for (let key in arr) { console.log(key); // 0, 1 (値ではなくキーが列挙される) }

まとめ

繰り返し処理は、プログラムにおいて「効率化」を実現するための不可欠な構文です。

for
while
を基本に、
for...of
forEach
を使い分けることで、読みやすく拡張性の高いコードを書くことができます。ループの基本をしっかり押さえたうえで、break や continue などの制御文も活用していきましょう。 ``