1. 空配列のときは空配列を返す
  2. 要素が 1 つで公開中ならそれだけを返す
  3. 非公開は飛ばす
  4. 4 件すべて公開中でも 3 件で打ち切る
  5. 非公開を飛ばしたうえで 3 件で打ち切る
コース一覧
JavaScript基礎文法:処理を組み立てる
break と continue でループを制御する

JavaScript基礎文法:処理を組み立てる

if・switch による条件分岐、配列とループ、関数とコールバック、オブジェクトを順に組み立てる全 33 レッスン(525 分)の基礎文法コースです。FizzBuzz、作品リスト、関数への整理、作品データの構造化を通して、入力から結果を返す処理を自分で分解して書きます。DOM 操作は次のコースで扱います。

1
条件分岐
01. if 文の基本15分
02. if / else if / else で段階判定15分
03. switch 文で値を一覧から選ぶ15分
04. 条件を組み合わせる20分
05. FizzBuzz で複数条件を組み立てる20分
06. つくる 時間帯で挨拶を変える20分
07. 第1章まとめクイズ10分
2
配列とループ
01. 配列のきほん15分
02. 要素を足す・取り除く15分
03. for ループで合計を求める15分
04. for-of で配列を走査する15分
05. while で条件を満たす間くり返す15分
06. break と continue でループを制御する15分
07. つくる 作品リストを一覧にする20分
08. 第2章まとめクイズ10分
3
関数
01. 関数宣言15分
02. アロー関数15分
03. デフォルト引数15分
04. 早期 return でネストを浅くする15分
05. 変数のスコープ15分
06. コールバック関数15分
07. forEach で配列をまわす15分
08. つくる 処理を関数に整理する20分
09. 第3章まとめクイズ10分
4
オブジェクト
01. オブジェクトのきほん18分
02. オブジェクトで複数の値を返す16分
03. const と参照18分
04. ?. で安全に取り出す16分
05. 分割代入18分
06. スプレッド構文18分
07. find と includes で探す16分
08. つくる 作品データを構造化する25分
09. 第4章まとめクイズ10分

break と continue でループを制御する

break と continue
解説

このレッスンで分かること

  • break はループそのものを終わらせます
  • continue はその周だけ飛ばして、次の周に進みます

最後まで見なくていいのに、最後まで見ている

ここまでのループは、配列を必ず先頭から末尾まで全部まわしていました。ですが実際のデータには「飛ばしたい要素」と「ここまで来たらもう見なくていい」があります。作品一覧なら、非公開のものは飛ばしたいし、並べるのが 3 件までなら 4 件目以降は見る必要がありません。前者が continue、後者が break です。

キーワード何をするか
continue今の周の残りを飛ばして、次の周へ進む
breakループ自体を終わらせる

どちらも単独では使わず、if と組み合わせて「この条件のときだけ」という形で書きます。条件を付けずに置くと、break は必ず 1 周で終わり、continue は本体が一度も実行されません。

continue は、その周だけを捨てる

JavaScript

const views = [0, 120, 0, 80]; let total = 0; for (const v of views) { if (v === 0) { continue; // 閲覧が無い日は数えない } total += v; } console.log(total); // 200

continue に出会うと、その周の残りの行は実行されず、次の要素に進みます。同じことは if (v !== 0) { ... } でも書けます。処理が 1 行ならそのほうが自然ですが、本体が 10 行あって除外条件が 3 つになると、if で囲む書き方はインデントがどんどん深くなります。除外を先に片付けて continue で抜ければ、本体を浅いまま保てます。

break は、そこでループを終わらせる

JavaScript

const titles = ["プロフィールサイト", "自己紹介カード", "スキル一覧の表"]; for (const title of titles) { console.log(title); if (title === "自己紹介カード") { break; // ここで終わり } } // プロフィールサイト // 自己紹介カード

3 番目は出力されません。探しものが見つかったあとに残りを見ても意味が無い、という場面のための道具です。要素が数万件ある配列なら、break があるかどうかで処理時間がまるで変わります。

気を付けたいのは判定を書く位置です。件数を数えて打ち切るときは、足してから数える。

JavaScript

let count = 0; for (const title of titles) { count++; if (count === 2) { break; } }

count++ より前に判定を置くと、2 件目を数える前に抜けてしまい 1 件で終わります。1 行の順番で結果が変わるので、増やしてから数える、と順番ごと覚えてください。

解説

break は switch でも使いました。どちらも「いちばん近いブロックを抜ける」という同じ働きです。ループが二重になっているとき、内側の break が抜けるのは内側のループだけで、外側は続きます。

よくある間違い

  • while の中で continue を使う — for の更新式は自動で実行されますが、while では更新行を自分で書いています。continue がその行を飛び越すと、条件がいつまでも変わらず止まらなくなります
  • break のつもりで continue を書く — 結果は合っていても、最後まで無駄にまわります。飛ばすのか、終わるのか。ここが 2 つの唯一の違いです

要件

  1. 関数名は pickPublishedTitles、引数は配列 titles と配列 flags の 2 つ、戻り値は文字列の配列
  2. flags[i] が false の要素は continue で飛ばすこと
  3. 集めた件数が 3 になったら break でループを抜けること
  4. 打ち切りの判定は、要素を追加したあとに行うこと

入出力例

pickPublishedTitles([], []) → [] pickPublishedTitles(["プロフィールサイト"], [true]) → ["プロフィールサイト"] pickPublishedTitles(["下書きメモ","自己紹介カード"], [false,true]) → ["自己紹介カード"] pickPublishedTitles(["プロフィールサイト","自己紹介カード","スキル一覧の表","ブログ"], [true,true,true,true]) → ["プロフィールサイト","自己紹介カード","スキル一覧の表"] pickPublishedTitles(["下書きメモ","プロフィールサイト","自己紹介カード","スキル一覧の表","ポートフォリオ"], [false,true,true,true,true]) → ["プロフィールサイト","自己紹介カード","スキル一覧の表"]

ヒント

`titles` と `flags` の両方を同じ番号で見るので、インデックスを使う `for` を選びます

`if (flags[i] === false) { continue; }` で非公開を飛ばし、そのあとで `push` します

`push` したあとに `if (result.length === 3) { break; }` と書きます。判定を `push` の前に置くと 2 件しか集まりません

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

関連レッスン

  • つくる 作品リストを一覧にする

    第5章で学んだ配列とループを全部使って、作品名の配列から番号付きの一覧文字列を作る関数を書きます。

  • 第2章まとめクイズ

    第5章で学んだ配列の作りかたと取り出しかた、push と pop、for と for-of、while、break と continue を 5 問で確認します。

  • 関数宣言

    function キーワードで処理に名前を付け、引数を受け取って戻り値を返す仕組みを学びます。プロフィールサイトの挨拶づくりを関数にまとめます。

  • オブジェクトのきほん

    関連する値をひとつの箱にまとめる入れ物がオブジェクトです。作成とプロパティの読み書きを身に付けます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • 配列サイズ固定の同型データの集まり
  • 処理計算や代入を表す長方形
  • インデントPythonはインデント(通常スペース4つ)でコードブロックを定義する。
  • ロック「他の人触らないでね」と DB に予約する
  • 関数処理に名前を付けて再利用できる単位
  • 引数位置引数=順番で渡す。
  • 戻り値呼び出し元への返答を表す点線矢印
main.js
学習モード
エディタを読み込んでいます

メモ

break と continue でループを制御する

⌘S で保存