7

私は現在、Javascript のコード アカデミー コースを受講しており、FizzBu​​zz のタスクで行き詰まっています。私は 1 から 20 まで数える必要があり、その数が 3 プリント フィズ、5 プリント バズ、両方のプリント フィズバズで割り切れる場合、それ以外の場合は数字を出力します。if/else if文ではできたのですが、switch文でやってみたかったのですが、できません。私のコンソールはデフォルトをログに記録し、1-20 を出力します。助言がありますか?

for (var x = 0; x<=20; x++){
        switch(x){
            case x%3==0:
                console.log("Fizz");
                break;
            case x%5===0:
                console.log("Buzz");
                break;
            case x%5===0 && x%3==0:
                console.log("FizzBuzz");
                break;
            default:
                console.log(x);
                break;
        };


};
4

8 に答える 8

10

Switch は、switch(x){ の x を case 式の評価結果に一致させます。すべてのケースが true /false になるため、一致するものがないため、デフォルトが常に実行されます。

問題にスイッチを使用することはお勧めしません。式が多すぎる場合、複数の真の出力が存在する可能性があり、予期しない結果が生じる可能性があるためです。しかし、あなたがそれに夢中になっているなら:

for (var x = 0; x <= 20; x++) {
  switch (true) {
    case (x % 5 === 0 && x % 3 === 0):
        console.log("FizzBuzz");
        break;
    case x % 3 === 0:
        console.log("Fizz");
        break;
    case x % 5 === 0:
        console.log("Buzz");
        break;
    default:
        console.log(x);
        break;
  }

}

于 2014-09-24T14:52:37.403 に答える
0

この声明の一部はswitch(true)を助けました。の switch ステートメントを実行しようとしていました。私のソリューションには、Rosettacodes - 一般的なソリューションのコーディング スタイルが組み込まれています。最も重要なのは、主要な条件を短縮するための強制入力の使用です。投稿するのに十分価値があると思いました:fizzbuzz

var fizzBuzzSwitch = function() {
  for (var i =0; i < 101; i++){
    switch(true) {
      case ( !(i % 3) && !(i % 5) ):
        console.log('FizzBuzz');
        break;
      case ( !(i % 3) ):
        console.log('Fizz');
        break;
      case ( !(i % 5) ):
       console.log('Buzz');
       break;
      default:
       console.log(i);
    }
  }
}
于 2015-05-17T01:10:00.213 に答える
0

これが私にとってそれを明確にしたものであり、役立つかもしれません:それswitch (x){}は意味の誤解です。

trueという意味ではありませんx。つまり、「これらの括弧の間に入れたものと等しい
ときはいつでも」x

したがって、私たちの場合、xNEVER equalsx%3===0またはその他の場合は、何も意味しません。x常に等しいだけですx。そのため、機械は命令を無視します。xswitch 関数で再定義していません。そして、あなたが括弧の間に入れたものは説明するだけでxありx、 に関連するものではありませんx.

要するに :どんな状態
if/elseも記述できます。
ではswitch、変数が取るさまざまな値のみを記述できますx

于 2018-01-28T05:25:57.373 に答える