Is the following code right:
var user = prompt("Is programming awesome?").toUpperCase();
switch (user) {
case 'HELL YEAH' || 'YES' || 'YEAH' || 'YEP' || 'YEA':
console.log("That's what I'd expected!");
break;
case 'KINDA'||'CANT SAY':
console.log("Oh, you'd like it when you'll be a pro!");
break;
case 'HELL NO'||'NO'||'NAH'||'NOPE'||'NA':
console.log("You can't say that!");
break;
default:
console.log("Wacha tryna say mate?");
break;
}
I tried it. But it didn't work as I wanted it to. It worked well if the input was 'hell no' or 'hell yeah', but all the later strings were just ignored!
I would approach this using a dictionary (object) containing your answers which you can then check with a function in the switch statement. It's a lot neater than having multiple case checks:
var user = prompt("Is programming awesome?").toUpperCase(); // 'HELL YEAH';
// 'dictionary' is just a JS object that has key/value pairs
// In this instance we have keys that map the case checks you were
// making and each has a corresponding array for its value, filled with
// the OR checks you wanted to make.
// We pass 'dict' in as the second parameter when we call checkAnswer
var dict = {
yes: ['HELL YEAH', 'YES', 'YEAH', 'YEP', 'YEA'],
maybe: ['KINDA', 'CANT SAY'],
no: ['HELL NO', 'NO', 'NAH', 'NOPE', 'NA']
};
// checkAnswer returns 'yes' for the user prompt 'HELL YEAH'
// It loops over the 'dict' object and if it finds an instance of
// your user input in one of the arrays it returns the key
// in this instance 'yes' for 'HELL YEAH' (indexOf returns 0)
// otherwise it returns false (for your 'default' case)
function checkAnswer(user, dict) {
for (var p in dict) {
if (dict[p].indexOf(user) > -1) return p;
}
return false;
}
// All we do is use checkAnswer to return the key where
// the user input is found in one of the dictionary arrays.
// That will always be a single string which is what switch expects
switch (checkAnswer(user, dict)) {
case 'yes':
console.log("That's what I'd expected!");
break;
case 'maybe':
console.log("Oh, you'd like it when you'll be a pro!");
break;
case 'no':
console.log("You can't say that!");
break;
default:
console.log("Wacha tryna say mate?");
break;
}
DEMO
I guess you have to do :
var user = prompt("Is programming awesome?").toUpperCase();
switch (user) {
case 'HELL YEAH':
case 'YES':
case 'YEAH':
case 'YEP':
case 'YEA':
console.log("That's what I'd expected!");
break;
case 'KINDA':
...
}
And so on...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With