本記事では、JavaScriptでfor文の中にfor文を使用している2重ループを抜け出す方法について解説しています。
JavaScriptの学習におすすめ書籍
1冊ですべて身につくJavaScript入門講座
メリット
- 誰でも分かるように嚙み砕いて説明してくれる
- アニメーションの知識が深く学べる
- 1つのWebサイトを作りながら学べる
ポチップ
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード
メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著: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重ループを抜け出せていることが確認できます。