多階層for each-inループ文にて、breakでループを終了させる

入れ子(ネスト)で多階層にしたfor each-inにて、複数の階層のループ(繰り返し)を終了させたいときは、breakの引数に、ラベルを指定する。

ラベルを指定しない場合、break文がある階層のループ(繰り返し)だけを終了させる。

※2013/01/27現在、Firefoxでは動作を確認出来たが、ChromeやExplorer9では動作を確認できない。

構文

ラベル指定あり

break ラベル;

指定したラベルがある階層のひとつ下の階層のループ(繰り返し)を終了させる。指定したラベルがある階層のループ(繰り返し)の次の処理へ移る。ラベルがループ外にある場合は、全階層のループを抜ける。

loop1:
for each ( 変数 in オブジェクト ) {
    繰り返し行う処理文
    loop2:
    for each ( 変数 in オブジェクト ) {
        繰り返し行う処理文
        if ( 終了条件式 ) {
            break loop1; // 全階層のループを終了させる
        }
    }
}

サンプル

<script type="text/javascript">
var $obj = {
    propA: {
        propA: "値1-1",
        propB: "値1-2",
        propC: "値1-3"
    },
    propB: {
        propA: "値2-1",
        propB: "値2-2",
        propC: "値2-3"
    },
    propC: {
        propA: "値3-1",
        propB: "値3-2",
        propC: "値3-3"
    }
};
loop1:
for each ( var $propValA in $obj ) {
    loop2:
    for each ( var $propValB in $propValA ) {
        document . write( $propValB );
        document . write( ', ' );
        if ( $propValB == "値2-2" ) {
            document . write( '<br />' );
            break loop1; // 全階層のループを終了させる
        }
    }
    document . write( '<br />' );
}
</script>

↓↓↓出力結果↓↓↓

※2013/01/27現在、Firefoxでは動作を確認出来たが、ChromeやExplorer9では動作を確認できない。

スポンサード リンク

カテゴリー: for each-in, JavaScript, リファレンス, 制御構造 タグ: パーマリンク