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

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

ラベルを指定しない場合、continue文がある階層のループ(繰り返し)の次の処理へスキップする。

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

構文

ラベル指定あり

continue ラベル;

指定したラベルがある階層のひとつ下の階層のループ(繰り返し)の次の処理へ移る。

loop1:
for each ( 変数 in オブジェクト ) {
    loop2:
    for each ( 変数 in オブジェクト ) {
        if ( スキップ条件式 ) {
            continue loop1; // 残りの処理をスキップし、1次元目のループの次の処理へ移る
        }
        繰り返し行う処理文
    }
    繰り返し行う処理文
}

サンプル

<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 ) {
        if ( $propValB == "値2-2" ) {
            document . write( '<br />' );
            continue loop1; // 残りの処理をスキップし、1次元目のループの次の処理へ移る
        }
        document . write( $propValB );
        document . write( ', ' );
    }
    document . write( '<br />' );
}
</script>

↓↓↓出力結果↓↓↓

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

スポンサード リンク

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