Issue
I am trying to write a switch statement but it doesn't seem to work how I want.
getExerciseDescription(exerciseId, intensity_level){
alert(exerciseId + " " + intensity_level)
switch (exerciseId && intensity_level) {
case (1 && 1):
this.header="Exercise 1 Level 1";
this.instructions="Exercise 1 Level 1";
break;
case (1 && 2):
this.header="Exercise 1 Level 2";
this.instructions="Exercise 1 Level 2";
break;
case (2 && 1):
this.header="Exercise 2 Level 1";
this.instructions="Exercise 2 Level 1";
break;
case (2 && 2):
this.header="Exercise 2 Level 2";
this.instructions="Exercise 2 Level 2";
break;
default:
this.header="Default";
this.instructions="Default";
break;
}
return new Popup(this.header, this.instructions);
}
The alerts gives 2 and 1 but the returned value is for (1 && 1). Why is it so? How can I fix this?
Solution
You just can't use a switch
like that. (1 && 1) == (2 && 1) == 1
and (1 && 2) == (2 && 2) == 2
, so you're doing the equivalent of:
getExerciseDescription(exerciseId, intensity_level){
alert(exerciseId + " " + intensity_level)
switch (exerciseId && intensity_level) {
case (1):
this.header="Exercise 1 Level 1";
this.instructions="Exercise 1 Level 1";
break;
case (2):
this.header="Exercise 1 Level 2";
this.instructions="Exercise 1 Level 2";
break;
case (1):
this.header="Exercise 2 Level 1";
this.instructions="Exercise 2 Level 1";
break;
case (2):
this.header="Exercise 2 Level 2";
this.instructions="Exercise 2 Level 2";
break;
default:
this.header="Default";
this.instructions="Default";
break;
}
return new Popup(this.header, this.instructions);
}
So of course the lower two cases will never execute. You're better of just using if
and else if
statements, or maybe nested switches if you want.
You could also do something like:
switch (exerciseId + " " + intensity_level) {
case("1 1"): ...
case("1 2"): ...
case("2 1"): ...
case("2 2"): ...
Answered By - Charles Clayton
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.