Question:
I'm doing an exercise but I can't go through all the necessary validations.
Write the function “MedalhaDeAcordoComPosto(number)”, which receives a number as a parameter, using only an “if”.
You have to return the medal that corresponds to the first positions of a competition:
- MedalDeagredoComPosto (1) – "gold"
- MedalDeagredoComPosto (2) – "silver"
- MedalDeagredoComPosto (3) – "bronze"
- MedAgreementWithPost (4) – "nothing"
- MedAgreementWithPost (15) – "nothing"
- MedAgreementWithPost(0) – "nothing"
var posicoes = ["nada", "ouro", "prata", "bronze"]; function medalhaDeAcordoComPosto(numero){ return posicoes[numero]; } console.log(medalhaDeAcordoComPosto(15));
My biggest question is how to return "nothing" when I pass parameter 0 or greater than 3.
Answer:
Hi @Raphael, it seems to me that your exercise is intended to make you understand two things.
- That the indices start at
0
. - Identify/Work with the size of an
Array
.
Array.length
I see that the first you already killed ,
because it is placing as the first element of its Array the string "nada"
So for you to finish your exercise you just have to check ( if
) using the size of the array ( posicoes.length
).
Important detail, posicoes.length
is the number of elements in your Array posicoes
, not the index of the last element .
Knowing this, just add the check if( numero >= posicoes.length ) return "nada";
var posicoes = ["nada", "ouro", "prata", "bronze"]; function medalhaDeAcordoComPosto(numero){ if( numero >= posicoes.length ) return "nada"; return posicoes[numero]; } console.log(0,medalhaDeAcordoComPosto(0)); console.log(1,medalhaDeAcordoComPosto(1)); console.log(2,medalhaDeAcordoComPosto(2)); console.log(3,medalhaDeAcordoComPosto(3)); console.log(4,medalhaDeAcordoComPosto(4)); console.log(5,medalhaDeAcordoComPosto(5)); console.log(15,medalhaDeAcordoComPosto(15));
Note: You may need to add a check for negative numbers to the if
, leaving +/- like this: if( numero >= posicoes.length || numero < 0)
Now let's use index 0
In this other example we are going to create an array with just the prizes, so we will have:
var posicoes = ["ouro", "prata", "bronze"];
In your function we will do the following:
- Decrease by
1
the value entered.
That way if the person calls the function passing the1
it will treat it as0
. -
Make an
if
to check:- if the value is less than
0
, that is, negative and invalid index. - OR if the value is greater than the number of elements in the array
- 1
, that is, the last index of the array.(posicoes.length-1)
- if the value is less than
var posicoes = ["ouro", "prata", "bronze"]; function medalhaDeAcordoComPosto(numero){ numero -= 1; /// ; isso é a msm coisa que `numero = numero - 1;` if( numero < 0 || numero > posicoes.length-1 ) return "nada"; return posicoes[numero]; } console.log(0,medalhaDeAcordoComPosto(0)); console.log(1,medalhaDeAcordoComPosto(1)); console.log(2,medalhaDeAcordoComPosto(2)); console.log(3,medalhaDeAcordoComPosto(3)); console.log(4,medalhaDeAcordoComPosto(4)); console.log(5,medalhaDeAcordoComPosto(5)); console.log(15,medalhaDeAcordoComPosto(15));