実務的なユースケースでの continue 応用 を紹介します。
A) 配列処理を filter ではなく continue で効率よく処理するパターン
配列に大量のデータがある場合、条件を満たさない要素は continue でスキップし、重い処理を回避できます。
const data = [
{id:1, score:45},
{id:2, score:90},
{id:3, score:70},
{id:4, score:20},
];
// 60点以上だけ処理したい
for (const item of data) {
if (item.score < 60) continue; // 条件を満たさなければスキップ
// 重い処理や出力
console.log(`id=${item.id} 合格!スコア=${item.score}`);
}
JavaScript出力:
id=2 合格!スコア=90
id=3 合格!スコア=70
✅ ポイント:
filterを使うと新しい配列が作られるが、continueは配列を変えずに効率的に処理可能。- 「条件外は飛ばす」 → 「重い処理を無駄に回さない」がキモ。
B) ラベルなしで外側ループをスキップするパターン(フラグ利用)
ラベル付き continue を使わずに、フラグを使って外側ループの残り処理をスキップする方法もあります。
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
for (let i = 0; i < matrix.length; i++) {
let skipOuter = false; // フラグ
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] === 5) {
skipOuter = true; // 条件に当たったら外側ループ残りをスキップ
break; // 内側ループだけ抜ける
}
console.log(`i=${i}, j=${j}, val=${matrix[i][j]}`);
}
if (skipOuter) continue; // 外側ループを次の回に進める
}
JavaScript出力:
i=0, j=0, val=1
i=0, j=1, val=2
i=0, j=2, val=3
i=2, j=0, val=7
i=2, j=1, val=8
i=2, j=2, val=9
✅ ポイント:
- 内側ループで条件に当たった場合、フラグを立てて内側を
breakし、外側ループはcontinueで次の回に進める。 - ラベルを使わずに外側ループをスキップできるので、ラベル嫌いな人にはこちらが読みやすい。
C) 応用例:配列のバリデーションでスキップ + 処理継続
ユーザー入力の配列を処理する例。
const users = [
{name:"Alice", active:true},
{name:"", active:true}, // 名前なし → スキップ
{name:"Bob", active:false}, // 非アクティブ → スキップ
{name:"Charlie", active:true}
];
for (const user of users) {
if (!user.name) continue;
if (!user.active) continue;
console.log(`保存します: ${user.name}`);
}
JavaScript出力:
保存します: Alice
保存します: Charlie
✅ ポイント:
- 複数条件でも、
continueを連続で書くことでネストを浅くできる。 - 条件を満たさない要素はどんどんスキップ。
まとめ
| 方法 | 特徴 | 利点 |
|---|---|---|
continue だけ | 内側ループスキップ | 単純で短く書ける |
ラベル付き continue | 外側ループのスキップ | 短く書けるが可読性注意 |
フラグ + 内側 break + 外側 continue | ラベルなしで外側スキップ | ラベルを避けたい場合に有効、可読性が高い |
- 実務では、
continueは「条件を満たさない回をスキップして次へ進めたい」場面で頻出。 - 深いネストの場合はフラグを使うと読みやすい。
