What am I doing wrong in this exercise?

Asked

Viewed 48 times

0

Write a function that given a total of years of study returns how experienced the user is:

<script>
        function experiencia(anos) {
            switch (anos) {
                case anos >= 0 && anos < 1:
                    return 'Iniciante'
                case anos >= 1 && anos < 3:
                    return 'Intermediário'
                case anos >= 3 && anos < 6:
                    return 'Avançado'
                case anos >= 7:
                    return 'Jedi Master'
            }
        }
        var anosEstudo = 7;
        var final = experiencia(anosEstudo);
        console.log(final)
    </script>

The ending gives Undefined, which is wrong?

  • 3

    Are you using the switch in the wrong way. In this case, it seems to me to make more sense to use if and else even

2 answers

3

the value of the transaction in the case anos >= 0 && anos < 1 is a Boolean.
your switch is comparing with 7 === true or 7 === false.

For conditions use the If

<script>
        function experiencia(anos) {
            if (anos >= 0 && anos < 1) return 'Iniciante';
            else if (anos >= 1 && anos < 3) return 'Intermediário';
            else if (anos >= 3 && anos < 6) return 'Avançado';
            else return 'Jedi Master';
        }
        var anosEstudo = 7;
        var final = experiencia(anosEstudo);
        console.log(final)
    </script>

1

The conditional switch evaluates an expression by combining the expression value for a clause case, and performs the instructions associated with case.

You can use Blocos de código comuns or Método para múltiplos casos

    function experiencia(anos) {
         switch (anos) {
             case 0:
                 return 'Iniciante'
             case 1:
             case 2:
                 return 'Intermediário'
             case 3:
             case 4:
             case 5:
                 return 'Avançado'
             case 6:
                 return 'To pensando'
             case 7:
                 return 'Jedi Master'
             default :
                 return 'Tem que estudar menos'
        }
    }
    var anosEstudo = 7;
    var final = experiencia(anosEstudo);
    console.log(final)

Another way

Basically, Javascript is trying to compare the expression in parentheses with the case values.

anos > = 6: will return true (true), therefore each case should be compared with the expression true

function experiencia(anos) {
    switch (true) {
       case anos >= 0 && anos < 1:
           return 'Iniciante'
       case anos >= 1 && anos < 3:
           return 'Intermediário'
       case anos >= 3 && anos < 6:
           return 'Avançado'
       case anos >= 6:
           return 'Jedi Master'
       }
    }
var anosEstudo = 7;
var final = experiencia(anosEstudo);
console.log(final)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.