JavaScriptにおけるcontinue文
ループの新しいイテレーションを開始するcontinue文も存在します。
この文はコードを簡略化するのに役立つことがありますが、ほとんどの場合、これなしでも問題を解決することができます。
実際の例を見てみましょう。
数値の配列があるとします。 ループを使って配列を反復処理し、2で割り切れる数値は2乗してコンソールに出力し、 3で割り切れる数値は3乗してコンソールに出力しましょう。 以下がそのタスクの解決策です:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 === 0) {
result = elem * elem;
console.log(result);
} else if (elem % 3 === 0) {
result = elem * elem * elem;
console.log(result);
}
}
ご覧の通り、console.log(result)の行が2回繰り返されています。
これをifの外に移動させてみましょう:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 === 0) {
result = elem * elem;
} else if (elem % 3 === 0) {
result = elem * elem * elem;
}
console.log(result); // 条件の外に出力を移動
}
しかし、これではスクリプトの動作が少し異なってしまいます:
条件式を通じて処理されていない通常の要素に対しても変数resultがコンソールに出力されてしまい、
これはタスクの条件で求められていないことです。
この問題を修正するために、ifにelse条件を追加し、
2でも3でも割り切れない要素に対しては、
即座にループの新しいイテレーションに飛ばすcontinue文を呼び出しましょう:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 == 0) {
result = elem * elem;
} else if (elem % 3 == 0) {
result = elem * elem * elem;
} else {
continue; // ループの新しいイテレーションに移行
}
console.log(result); // 2または3で割り切れる場合に実行される
}
continueを使って奇数をスキップし、
1から100までの偶数のみを出力するループを書いてください。