【Amazon】人気の商品が日替わりで登場!
毎日お得なタイムセール!商品をみる

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

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

JavaScriptの学習におすすめ書籍
1冊ですべて身につくJavaScript入門講座
総合評価
( 5 )
メリット
  • 誰でも分かるように嚙み砕いて説明してくれる
  • アニメーションの知識が深く学べる
  • 1つのWebサイトを作りながら学べる
先輩くん

Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!

後輩ちゃん

初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

全プログラマー必見!
変数名/関数名にもう悩まない!
リーダブルコード
総合評価
( 5 )
メリット
  • 美しいコードが書けるが自然と書けるようになる
  • 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次

普通の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アクセスランキング にほんブログ村 FC2 Blog Ranking

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次