2017-02-06 9 views
0

1から30までの値を返すループを作成しようとしていますが、10で割り切れる数値はすべて、対応する単語にハードコードします。例は値10 = "10"、20 = "20"などとなります。ループで値を変更するにはどうすればいいですか

私は表示された結果が "10"を通過しないが、これを "続行"で試してみました。

for (i = 0; i <= 30; i++) { 
     if (i == 10) { 
      i = "Ten"; 
      continue; 
     } if (i == 20) { 
      i = "Twenty"; 
      continue; 
     } 
     console.log(i); 
    } 

Results

私はそれについて正しい方法が起こっているのですか?私はこれを理解できるようにいくつかのヒントを提供してください。ありがとう、

私はこれを最初に試しました。しかし、動作しませんでした。

for (i = 0; i <= 30; i++) { 
     if (i == 10) { 
     i = "Ten";  
     } if (i == 20) { 
     i = "Twenty"; 
     } 
    console.log(i); 
    } 
+0

ループ内のループ変数を変更することは、コードの匂いです。それはほとんど決して良い考えではありません。 –

答えて

1

continueステートメントを削除してください。これにより、ループはすぐに最後までスキップし、別の反復を開始します。したがって、コンソール出力ステートメントはスキップされます。また、ループ変数に触れたくない場合は、elseという怪我をしません。このような何か:

var result; 
for (i = 0; i <= 30; i++) { 
    if (i == 10) { 
     result = "Ten"; 
    } else if (i == 20) { 
     result = "Twenty"; 
    } else { 
     result = i; 
    } 
    console.log(result); 
} 

それとも、単にif/elseチェーンの各支店に直接所望の出力をログに記録できます。私はあなたが私を変えることができると思うし、それがとして動作することを期待いけない

for (i = 0; i <= 30; i++) { 
    if (i == 10) { 
     console.log("Ten"); 
    } else if (i == 20) { 
     console.log("Twenty"); 
    } else { 
     console.log(i); 
    } 
} 
+0

なぜ私は整数から文字列に変更し、+ 1に私の変数を期待しているので、それは動作しませんでしたか?あなたの返事を見ました。ご説明ありがとうございます!!!今や意味をなさない – OatmealForever

+0

@OatmealForeverまさに –

+0

@OatmealForever - はい、ループの進捗を妨げない限り、ループ変数をそのままにしておく必要があります。 (時には実際には必要ですが、この場合は明確ではありません)。最終的にどこが故障するのかは '+ 1'ではなく、' 'Ten1 ''という文字列を与えます。しかし、 '' i ''が文字列になると文字列のままになり、すべてのテスト( '<= 30'、' == 10'、 '== 20')は' false'に評価されます。 –

0

いつもしたがって、値を "TEN"に変更すると、ループは終了します。!!!!

0

カウンタがになると、文字列に置き換えられます。制御フローがi++に達すると、ループは失敗します。あなたがすべきことは、ループの本体の内部でのみ使用される別の変数に印刷する値を割り当てることです。

関連する問題