JavaScript

【JavaScript】2重ループを抜け出す方法

本記事では、JavaScriptでfor文の中にfor文を使用している2重ループを抜け出す方法について解説しています。

JavaScriptの学習におすすめ参考書
改訂3版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

本書情報
出版社技術評論社
著者山田 祥寛
発売日2023/2/13
ページ数624ページ
レビュー
(Amazon)
(4件)
先輩くん
先輩くん
10万部突破したJavaScriptの本が大幅増補改訂し7年ぶりに発売されたよ!
後輩ちゃん
後輩ちゃん
最新の基本文法から、開発に欠かせない応用トピックまで学ぶことが出来るよ!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

普通のbreakでは2重ループを抜け出せない!?

繰り返し処理を抜けるためには、breakを使いますがいつも通りの書き方では抜け出すことは出来ません。

for (let i = 1; i <= 3; i++) { // ループ①
  console.log(`外枠for文のループ処理回数: ${i}`);
  for (let j = 1; j <= 3; j++) { // ループ②
    if (j === 2) break;
  }
}

/* コンソールログ *
 * 外枠for文のループ処理回数: 1
 * 外枠for文のループ処理回数: 2
 * 外枠for文のループ処理回数: 3
 */

上記コードの想定している挙動は、コンソールログに「外枠for文のループ処理回数: 1」のみ出力されるはずですが、実際はコンソールログにループ処理回数が3回表示されています。

このような挙動になる理由は、breakが記述されたループブロックのみ抜けるという性質を持っているからです。今回の場合だと、breakが記述されたループブロックは上記コードの「ループ②」に該当するため「ループ①」を抜けることが出来ません。

ラベルを付与する

2重ループを抜けるためには、抜け出したいループ処理の先頭に任意のラベルを付与させます。先ほど紹介したサンプルコードの場合「ループ①」の先頭にラベル名を付与します。

ラベル名の付け方は以下のとおりです。

ラベル名:
先輩くん

ラベル名を付けたサンプルコードは以下のとおりだよ!

sampleLoop: for (let i = 1; i <= 3; i++) {
  console.log(`外枠for文のループ処理回数: ${i}`);
  for (let j = 1; j <= 3; j++) {
    if (j === 2) break sampleLoop;
  }
}

/* コンソールログ *
 * 外枠for文のループ処理回数: 1
 */

sampleLoopというラベル名を付与させ、breakの後にラベル名を指定しています。コンソールログを確認すると「外枠for文のループ処理回数: 1」のみ表示されているため、2重ループを抜け出せていることが確認できます。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村