Lés
Lés

Reputation: 11

How to use switch to compare values between values

I'm learning JavaScript with a very basic and simple Level Upper system by a button using a XP Table to set var named Level a value and print it.

How can I use the switch statement to compare numbers between 10 and 20 as example, and return a var named Level the value of 2(Lv. 2)?

I've tried using "case 10...20" (3 dots as in another languages) but it didn't work!

I tried to use if statement, but it doesn't work properly. :/

var Exp = 1;
var Level = 1;

function MaisExp()
{
    Exp++;
    document.getElementById("console").innerHTML = "+1 XP! | "+" Total: "+Exp+" xp points";
    VerLevel();
}

function VerLevel()
{
    switch(Exp)
    {
        case 0...10: ***< --- dots didn't work.***
        {
            Level=1;
        }
        case 20:
        {
            Level=2;
        }
        case 40:
        {
            Level=1;
        }
        case 80:
        {
            Level=1;
        }
    }
    document.getElementById("tela").innerHTML = Level; 
}

Upvotes: 1

Views: 2026

Answers (3)

Piyin
Piyin

Reputation: 1834

The case statement doesn't work with multiple validations, it can only handle one per case. However, you can list multiple cases, for example:

switch(age){
  case 0:// If age is 0, it would enter here, since there is no "break;" it goes down to 1
  case 1:// Same as above
  case 2:// Same as above
  case 3:// Since this one has a break, this code is executed and then the switch terminates
    console.log('This toy is not right for this person');
    break;
  default:// This special case fires if age doesn't match any of the other cases, or none of the other cases broke the flow
    console.log('This toy is good for this person');
}

So, in your code, it should be something like:

switch(Exp)
{
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
        Level=1;
        break;
    case 20:
        Level=2;
        break;
    case 40:
        Level=1;
        break;
    case 80:
        Level=1;
        break;
}

But, since you want all to be level 1, but 20, you could also use the default case, like this:

switch(Exp)
{
    case 20:
        Level=2;
        break;
    default:
        Level=1;
}

Upvotes: 1

brso05
brso05

Reputation: 13232

You can use if statements like this:

if(Exp >= 0 && Exp <= 10)
{
}
else if(Exp <= 20)
{
}
else if(Exp <= 30) etc...

Upvotes: 1

Nina Scholz
Nina Scholz

Reputation: 386680

While you have already a default value of 1, you could take it in the function and check onle the condition for level = 2.

function VerLevel() {
    Level = 1;
    if (Exp === 20) {
        Level = 2;
    }
    document.getElementById("tela").innerHTML = Level; 
}

I suggest to change the style of variable and function to start with lower case letters, because functions with upper case letters denotes instanciable/constructor functions, which can be uses with new operator.

Upvotes: 0

Related Questions