2017-03-24 15 views
-1

このif文をswitch caseに変換するにはどうすればよいですか?私はこのような変数を宣言しようとした:if文をswitch/caseに変換する

myAge = parseFloat(prompt("Enter you age: ")); 

if(myAge <18) { 
    alert("You cant not vote at this " +myAge); 
} else if (myAge >18) { 
    alert("Vote wisely, you are " +myAge "years old!"); 
} else { 
    alert("Invalid age"); 
} 
+7

何myAge == 18' '場合は? –

+3

@JonathonReinhartが言ったことに加えて、なぜこれをswitch文にしたいのですか?確かにこれに続く2つの道しかないのですか?訂正されたif文は私にとっては妥当と思われます。 – Steve

+0

はい、私もそれを含めたいと思っていますが、ちょっと混乱します。助けてください –

答えて

1

年齢< 18場合は、条件を付け 年齢> = 18場合は、この歳で

を投票しないことができない、あなたがこの歳で投票することができます。

無効な年齢。

var myAge = parseFloat(prompt("Enter you age: ")); 
 
switch (true) { 
 
    case myAge < 18: 
 
    alert("You cant not vote at this " + myAge); 
 
    break; 
 

 
    case myAge >= 18: 
 
    alert("Vote wisely, you are " + myAge + " years old!"); 
 
    break; 
 

 
    default: 
 
    alert("Invalid age"); 
 
}

+0

ありがとう、それは完全に動作します、私は本当にそれを感謝します。 –

1

あなたの質問に「どのように私はそれを切り替えるように変換することができます」、あなたはCスタイルの比較とリターンを-1作る機能を実装することができます応答、0または1比較の結果として。

以下の例では、setIntervalを使用して複数の異なるケースをエミュレートしています。
これは例のためのものです。

function compareTo(a, b) { 
 
    if (a < b) 
 
    return -1; 
 

 
    if (a > b) 
 
    return 1; 
 

 
    return 0; 
 
} 
 

 

 
function EvaluateAge() { 
 
    // Generate a random age between 10 and 40 
 
    var myAge = Math.floor((Math.random() * 30) + 10); 
 
    switch (compareTo(myAge, 18)) { 
 
    case -1: 
 
     console.log(myAge, " less than 18"); 
 
     break; 
 

 
    case 0: 
 
     console.log(myAge, " equal to 18"); 
 
     break; 
 

 
    case 1: 
 
     console.log(myAge, "more than 18"); 
 
     break; 
 
    } 
 
} 
 

 
// Example only 
 
setInterval(EvaluateAge, 1000);

もう一つの方法は、スイッチの状態でtrueを使用するJS switch能力を使用することです:

var myAge = 16; 
 
switch (true) { 
 
    case myAge < 18: 
 
    console.log("less than 18"); 
 
    break; 
 

 
    case myAge === 18: 
 
    console.log("equal to 18"); 
 
    break; 
 

 
    case myAge > 18: 
 
    console.log("more than 18"); 
 
    break; 
 
}

しかし、そうでありませんこのような使い方を避けることは良い考えです。

実際には、あなたのifはうまく見え、それをswitchに変換する必要はありません。コードの可読性/保守性を向上させることはありません。

var myAge = parseFloat(prompt("Enter you age: ")); 
 
switch (true) { 
 
    case myAge < 18: 
 
    alert("You cant not vote at this " + myAge); 
 
    break; 
 

 
    case myAge > 18: 
 
    alert("Vote wisely, you are " + myAge + " years old!"); 
 
    break; 
 

 
    default: 
 
    alert("Invalid age"); 
 
}

注意、あなたがの値をキャプチャされていないこと:あなたがif文の代わりに簡潔なのこのをしたいだろうが、あなたはとても好きなことができる理由

+0

私はswitch文への複数の呼び出しをエミュレートする 'interval'を追加するあなたの例に少し追加しました。これが畳み込まれていると思われる場合は、元気に戻してください。 – Zze

0

わかりません18私はちょうど意図していたと思いますが、あなたに指摘する価値があり、また、元の例が実行されていないように、+が2番目の警告を連結していませんでした。

関連する問題