9.

ループ処理

編集

JavaScriptにおいてループ処理をおこなう際は、for文while文という2種類を使い分ける。

大まかには以下のような使い分けを行う。

・繰り返し回数が決まっている場合はfor文を使用する。

・繰り返し回数が決まっていない場合はwhile文を使用する。

子ページから選択して下さい。

本ページの子ページ

  • for文 — 回数を決めて繰り返す

JavaScriptのループ構文一覧

構文用途
for回数が決まっている繰り返し
while条件が真の間繰り返し
do...while最低1回は実行してから条件判定
for...inオブジェクトのキーを列挙
for...of配列・iterableの値を列挙
forEach配列の各要素にコールバック適用
map / filter / reduce関数型風のシーケンス処理

主要なループの書き方

// for
for (let i = 0; i < 10; i++) {
    console.log(i);
}

// while
let i = 0;
while (i < 10) {
    console.log(i);
    i++;
}

// do...while(最低1回実行)
let n = 0;
do {
    console.log(n);
    n++;
} while (n < 3);

// for...of(配列を順に)
const fruits = ['apple', 'banana', 'orange'];
for (const fruit of fruits) {
    console.log(fruit);
}

// for...in(オブジェクトのキー)
const user = { name: 'Taro', age: 20 };
for (const key in user) {
    console.log(key, user[key]);
}

// forEach
fruits.forEach((fruit, i) => {
    console.log(i, fruit);
});

map / filter / reduce(関数型風)

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

// map:各要素を変換
const doubled = nums.map(n => n * 2);    // [2,4,6,8,10]

// filter:条件で絞り込み
const evens = nums.filter(n => n % 2 === 0); // [2,4]

// reduce:合計や集約
const sum = nums.reduce((acc, n) => acc + n, 0); // 15

break / continue

for (let i = 0; i < 10; i++) {
    if (i === 5) break;      // ループ脱出
    if (i % 2 === 0) continue; // 偶数はスキップ
    console.log(i);
}

使い分けの目安

場面推奨
回数が決まっているfor
条件で続ける/停止while / do...while
配列を順に処理for...of / forEach
オブジェクトのキーを列挙for...in または Object.keys(...)
変換・集約を簡潔にmap / filter / reduce

注意点

  • for...in配列に対しては推奨されない(インデックスが文字列、順序保証なし、継承プロパティも含む)。配列なら for...of
  • 無限ループ: 条件式が常に true だと止まらない。break を必ず想定
  • forEachbreak できない。途中で抜けたい場合は for...ofsome/every
  • 非同期処理を含むループは for...of + await が読みやすい(forEach+await は意図通り動かない)

関連

編集
Post Share
子ページ
  1. for文
同階層のページ
  1. 記述方法
  2. コメント
  3. 変数の宣言
  4. 関数
  5. 演算子
  6. 条件文
  7. 配列
  8. 連想配列
  9. ループ処理
  10. 非同期処理
  11. 同期処理
  12. 確認ウィンドウを表示する方法
  13. 文字の置換
  14. base urlを取得する方法
  15. formのsubmit前にjavascriptを呼び出す方法
  16. undefinedのイコール判定
  17. Javascript のみで form を post で submit する方法