Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Gostaria de saber se tem uma forma melhor de colocar Sim

Gostaria de saber se tem alguma forma melhor de colocar todas as formas de responder sim, para o codigo ficar menor!

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var idade = parseInt(prompt("Qual é sua idade?"));
    var temCarteira = prompt("Tem carteira? Responda S ou N");

// Muitas formas de responder sim!! =(
    if (idade >= 18 && temCarteira == "S" || temCarteira == "s" || temCarteira == "sim" || temCarteira == "Sim" || temCarteira == "SIM"){

        document.write("Pode dirigir!");
    } else { 
        document.write("Não pode dirigir!");
    }

</script>
2 respostas
solução!

Olá Lucas, tudo bem?

Existe uma outra forma de fazer sim, que deixará o código um pouco menor. Explicarei a seguir:

1º Iremos criar uma variável, que irá receber um array ou vetor [] que irá conter um conjunto de dados.

 var possibilidadesResposta = ['sim', 's']

Os dados são o 'sim' e 's', isso é o mesmo que fazer como no código anterior: temCarteira == "s" || temCarteira == "sim"

Mas e as possibilidades de prompt em caixa alta?

Para isso, iremos declarar na especificação do if o método includes, dessa forma:

if (idade >= 18 && possibilidadesResposta.includes(temCarteira.toLowerCase())) {

Assim, estamos dizendo que a variável possibilidadesResposta inclui e recebe todas as possibilidades de entradas que não estejam em caixa baixa (SIM, S, sIm, siM), pois esses inputs serão transformados em caixa baixa para validação, ou seja, (toLowerCase).

O código completo ficará assim:

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var idade = parseInt(prompt("Qual é sua idade?"));
    var temCarteira = prompt("Tem carteira? Responda S ou N");

// Muitas formas de responder sim!! =(
    var possibilidadesResposta = ['sim', 's'] 

    if (idade >= 18 && possibilidadesResposta.includes(temCarteira.toLowerCase())) {
        document.write("Pode dirigir!");
    } else { 
        document.write("Não pode dirigir!");
    }

</script>

Dessa forma, além de reduzir o código também resolvemos um problema, pois da forma que o código estava anteriormente, caso o usuário responde-se " sIm ou siM " por exemplo, a resposta não iria ser validada. Agora, qualquer configuração de caixa que o usuário responder, utilizando os caracteres 's' ou 'sim', será interpretado e validado corretamente.

Caso ainda não tenha aprendido sobre arrays, recomendo continuar o curso, pois mais para frente esse conceito será fortemente explorado.

Além disso, caso queira estudar uma pouco mais, vale a pena a leitura:

Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Bons estudos!

Oii Beatriz, muito obrigado pela resposta, eu cheguei sim ja na parte de array, e acabei ate esquecendo dessa minha pergunta, mas de conseguir ler em caixa alta ainda nao conhecia, muito obrigado.