入れ子(ネスト)で多階層にしたfor each-inにて、複数の階層のループ(繰り返し)処理をスキップさせたいときは、continueの引数に、ラベルを指定する。
ラベルを指定しない場合、continue文がある階層のループ(繰り返し)の次の処理へスキップする。
※2013/01/27現在、Firefoxでは動作を確認出来たが、ChromeやExplorer9では動作を確認できない。
構文
ラベル指定あり
continue ラベル;
指定したラベルがある階層のひとつ下の階層のループ(繰り返し)の次の処理へ移る。
loop1:
for each ( 変数 in オブジェクト ) {
loop2:
for each ( 変数 in オブジェクト ) {
if ( スキップ条件式 ) {
continue loop1; // 残りの処理をスキップし、1次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
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>
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では動作を確認できない。