入れ子(ネスト)で多階層にしたfor-inループ文において、複数の階層のループ(繰り返し)処理をスキップさせたいときは、continueの引数に、ラベルを指定する。
ラベルを指定しない場合、continue文がある階層のループ(繰り返し)の次の処理へスキップする。
構文
ラベル指定あり
continue ラベル;
指定したラベルがある階層のひとつ下の階層のループ(繰り返し)の次の処理へ移る。
2階層
loop1: // ラベル
for ( 変数A in オブジェクト ) {
loop2: // ラベル
for ( 変数B in オブジェクト[変数A] ) {
if ( スキップ条件式 ) {
continue loop1; // 残りの処理をスキップし、1次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
for ( 変数A in オブジェクト ) {
loop2: // ラベル
for ( 変数B in オブジェクト[変数A] ) {
if ( スキップ条件式 ) {
continue loop1; // 残りの処理をスキップし、1次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
3階層
loop1: // ラベル
for ( 変数A in オブジェクト ) {
loop2: // ラベル
for ( 変数B in オブジェクト[変数A] ) {
loop3: // ラベル
for ( 変数C in オブジェクト[変数A][変数B] ) {
if ( スキップ条件式 ) {
continue loop2; // 3次元目と2次元目のループの残りの処理をスキップし、2次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
繰り返し行う処理文
}
for ( 変数A in オブジェクト ) {
loop2: // ラベル
for ( 変数B in オブジェクト[変数A] ) {
loop3: // ラベル
for ( 変数C in オブジェクト[変数A][変数B] ) {
if ( スキップ条件式 ) {
continue loop2; // 3次元目と2次元目のループの残りの処理をスキップし、2次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
繰り返し行う処理文
}
ラベル指定なし
continue;
continue文がある階層のループ(繰り返し)の次の処理へ移る。
2階層
for ( 変数A in オブジェクト ) {
for ( 変数B in オブジェクト[変数A] ) {
if ( 終了条件式 ) {
continue; // 2次元目のループの残りの処理をスキップし、2次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
for ( 変数B in オブジェクト[変数A] ) {
if ( 終了条件式 ) {
continue; // 2次元目のループの残りの処理をスキップし、2次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
3階層
for ( 変数A in オブジェクト ) {
for ( 変数B in オブジェクト[変数A] ) {
for ( 変数C in オブジェクト[変数A][変数B] ) {
if ( 終了条件式 ) {
continue; // 3次元目のループの残りの処理をスキップし、3次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
繰り返し行う処理文
}
for ( 変数B in オブジェクト[変数A] ) {
for ( 変数C in オブジェクト[変数A][変数B] ) {
if ( 終了条件式 ) {
continue; // 3次元目のループの残りの処理をスキップし、3次元目のループの次の処理へ移る
}
繰り返し行う処理文
}
繰り返し行う処理文
}
繰り返し行う処理文
}
サンプル
2次元の連想配列(単純なオブジェクト)
ラベル指定あり
<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 ( var $keyA in $obj ) {
loop2: // ラベル
for ( var $keyB in $obj[$keyA] ) {
if ( $obj[$keyA][$keyB] == "値2-2" ) {
document . write( '<br />' );
continue loop1; // 残りの処理をスキップし、「loop1」ラベルのひとつ下の階層のループの次の処理へ移る
}
document . write( $obj[$keyA][$keyB] );
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 ( var $keyA in $obj ) {
loop2: // ラベル
for ( var $keyB in $obj[$keyA] ) {
if ( $obj[$keyA][$keyB] == "値2-2" ) {
document . write( '<br />' );
continue loop1; // 残りの処理をスキップし、「loop1」ラベルのひとつ下の階層のループの次の処理へ移る
}
document . write( $obj[$keyA][$keyB] );
document . write( ', ' );
}
document . write( '<br />' );
}
</script>
↓↓↓出力結果↓↓↓
ラベル指定なし
<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"
}
};
for ( var $keyA in $obj ) {
for ( var $keyB in $obj[$keyA] ) {
if ( $obj[$keyA][$keyB] == "値2-2" ) {
continue; // 残りの処理をスキップし、現在のループの次の処理へ移る
}
document . write( $obj[$keyA][$keyB] );
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"
}
};
for ( var $keyA in $obj ) {
for ( var $keyB in $obj[$keyA] ) {
if ( $obj[$keyA][$keyB] == "値2-2" ) {
continue; // 残りの処理をスキップし、現在のループの次の処理へ移る
}
document . write( $obj[$keyA][$keyB] );
document . write( ', ' );
}
document . write( '<br />' );
}
</script>
↓↓↓出力結果↓↓↓
2次元の配列オブジェクト
ラベル指定あり
<script type="text/javascript">
var $arr = new Array(
[ "要素1-1", "要素1-2", "要素1-3" ],
[ "要素2-1", "要素2-2", "要素2-3" ],
[ "要素3-1", "要素3-2", "要素3-3" ]
);
loop1: // ラベル
for ( var $keyA in $arr ) {
loop2: // ラベル
for ( var $keyB in $arr[$keyA] ) {
if ( $arr[$keyA][$keyB] == "要素2-2" ) {
document . write( '<br />' );
continue loop1; // 残りの処理をスキップし、「loop1」ラベルのひとつ下の階層のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB] + ', ' );
}
document . write( '<br />' );
}
</script>
var $arr = new Array(
[ "要素1-1", "要素1-2", "要素1-3" ],
[ "要素2-1", "要素2-2", "要素2-3" ],
[ "要素3-1", "要素3-2", "要素3-3" ]
);
loop1: // ラベル
for ( var $keyA in $arr ) {
loop2: // ラベル
for ( var $keyB in $arr[$keyA] ) {
if ( $arr[$keyA][$keyB] == "要素2-2" ) {
document . write( '<br />' );
continue loop1; // 残りの処理をスキップし、「loop1」ラベルのひとつ下の階層のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB] + ', ' );
}
document . write( '<br />' );
}
</script>
↓↓↓出力結果↓↓↓
ラベル指定なし
<script type="text/javascript">
var $arr = new Array(
[ "要素1-1", "要素1-2", "要素1-3" ],
[ "要素2-1", "要素2-2", "要素2-3" ],
[ "要素3-1", "要素3-2", "要素3-3" ]
);
for ( var $keyA in $arr ) {
for ( var $keyB in $arr[$keyA] ) {
if ( $arr[$keyA][$keyB] == "要素2-2" ) {
continue; // 残りの処理をスキップし、現在のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB] + ', ' );
}
document . write( '<br />' );
}
</script>
var $arr = new Array(
[ "要素1-1", "要素1-2", "要素1-3" ],
[ "要素2-1", "要素2-2", "要素2-3" ],
[ "要素3-1", "要素3-2", "要素3-3" ]
);
for ( var $keyA in $arr ) {
for ( var $keyB in $arr[$keyA] ) {
if ( $arr[$keyA][$keyB] == "要素2-2" ) {
continue; // 残りの処理をスキップし、現在のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB] + ', ' );
}
document . write( '<br />' );
}
</script>
↓↓↓出力結果↓↓↓
3次元の配列オブジェクト
ラベル指定あり
<script type="text/javascript">
var $arr = new Array(
[
[ "要素1-1-1", "要素1-1-2", "要素1-1-3" ],
[ "要素1-2-1", "要素1-2-2", "要素1-2-3" ],
[ "要素1-3-1", "要素1-3-2", "要素1-3-3" ]
],
[
[ "要素2-1-1", "要素2-1-2", "要素2-1-3" ],
[ "要素2-2-1", "要素2-2-2", "要素2-2-3" ],
[ "要素2-3-1", "要素2-3-2", "要素2-3-3" ]
],
[
[ "要素3-1-1", "要素3-1-2", "要素3-1-3" ],
[ "要素3-2-1", "要素3-2-2", "要素3-2-3" ],
[ "要素3-3-1", "要素3-3-2", "要素3-3-3" ]
]
);
lableLoop1: // ラベル
for ( var $keyA in $arr ) {
lableLoop2: // ラベル
for ( var $keyB in $arr[$keyA] ) {
lableLoop3: // ラベル
for ( var $keyC in $arr[$keyA][$keyB] ) {
if ( $arr[$keyA][$keyB][$keyC] == "要素2-2-2" ) {
document . write( '<br />' );
continue lableLoop2; // 残りの処理をスキップし、「lableLoop2」ラベルのひとつ下の階層のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB][$keyC] + ', ' );
}
document . write( '<br />' );
}
}
</script>
var $arr = new Array(
[
[ "要素1-1-1", "要素1-1-2", "要素1-1-3" ],
[ "要素1-2-1", "要素1-2-2", "要素1-2-3" ],
[ "要素1-3-1", "要素1-3-2", "要素1-3-3" ]
],
[
[ "要素2-1-1", "要素2-1-2", "要素2-1-3" ],
[ "要素2-2-1", "要素2-2-2", "要素2-2-3" ],
[ "要素2-3-1", "要素2-3-2", "要素2-3-3" ]
],
[
[ "要素3-1-1", "要素3-1-2", "要素3-1-3" ],
[ "要素3-2-1", "要素3-2-2", "要素3-2-3" ],
[ "要素3-3-1", "要素3-3-2", "要素3-3-3" ]
]
);
lableLoop1: // ラベル
for ( var $keyA in $arr ) {
lableLoop2: // ラベル
for ( var $keyB in $arr[$keyA] ) {
lableLoop3: // ラベル
for ( var $keyC in $arr[$keyA][$keyB] ) {
if ( $arr[$keyA][$keyB][$keyC] == "要素2-2-2" ) {
document . write( '<br />' );
continue lableLoop2; // 残りの処理をスキップし、「lableLoop2」ラベルのひとつ下の階層のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB][$keyC] + ', ' );
}
document . write( '<br />' );
}
}
</script>
↓↓↓出力結果↓↓↓
ラベル指定なし
<script type="text/javascript">
var $arr = new Array(
[
[ "要素1-1-1", "要素1-1-2", "要素1-1-3" ],
[ "要素1-2-1", "要素1-2-2", "要素1-2-3" ],
[ "要素1-3-1", "要素1-3-2", "要素1-3-3" ]
],
[
[ "要素2-1-1", "要素2-1-2", "要素2-1-3" ],
[ "要素2-2-1", "要素2-2-2", "要素2-2-3" ],
[ "要素2-3-1", "要素2-3-2", "要素2-3-3" ]
],
[
[ "要素3-1-1", "要素3-1-2", "要素3-1-3" ],
[ "要素3-2-1", "要素3-2-2", "要素3-2-3" ],
[ "要素3-3-1", "要素3-3-2", "要素3-3-3" ]
]
);
for ( var $keyA in $arr ) {
for ( var $keyB in $arr[$keyA] ) {
for ( var $keyC in $arr[$keyA][$keyB] ) {
if ( $arr[$keyA][$keyB][$keyC] == "要素2-2-2" ) {
continue; // 残りの処理をスキップし、現在のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB][$keyC] + ', ' );
}
document . write( '<br />' );
}
}
</script>
var $arr = new Array(
[
[ "要素1-1-1", "要素1-1-2", "要素1-1-3" ],
[ "要素1-2-1", "要素1-2-2", "要素1-2-3" ],
[ "要素1-3-1", "要素1-3-2", "要素1-3-3" ]
],
[
[ "要素2-1-1", "要素2-1-2", "要素2-1-3" ],
[ "要素2-2-1", "要素2-2-2", "要素2-2-3" ],
[ "要素2-3-1", "要素2-3-2", "要素2-3-3" ]
],
[
[ "要素3-1-1", "要素3-1-2", "要素3-1-3" ],
[ "要素3-2-1", "要素3-2-2", "要素3-2-3" ],
[ "要素3-3-1", "要素3-3-2", "要素3-3-3" ]
]
);
for ( var $keyA in $arr ) {
for ( var $keyB in $arr[$keyA] ) {
for ( var $keyC in $arr[$keyA][$keyB] ) {
if ( $arr[$keyA][$keyB][$keyC] == "要素2-2-2" ) {
continue; // 残りの処理をスキップし、現在のループの次の処理へ移る
}
document . write( $arr[$keyA][$keyB][$keyC] + ', ' );
}
document . write( '<br />' );
}
}
</script>
↓↓↓出力結果↓↓↓