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