5
respostas

Pq não funciona com os dois ifs dentro do for?

Quando eu coloquei meu código pra rodar, não saía do ingrediente 1. Depois de comparar com o código do instrutor, vi que a diferença era que eu tinha colocado os dois ifs dentro do for, mas não entendi pq não poderia funcionar como fiz, ou com if/else.

5 respostas

Boa noite. Coloque o código aqui amigo, fica mais fácil de te ajudar

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>
    var ingredientes = [];

    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

    var contador = 1;

    while( contador <= quantidade) {

        var ingrediente = prompt("Informe o ingrediente " + contador);

        var existe = false;

        for( var posicao = 0; posicao < ingredientes.length; posicao++) {

            if( ingredientes[posicao] == ingrediente) {

                existe = true;
                break;
            }


            if( existe == false) {

                ingredientes.push(ingrediente);
                contador++;
            }

        }

    }

    console.log(ingredientes);
</script>

Ali no for, você compara se a posição (que inicia com o valor 0) é menor que o tamanho da variável "ingredientes". Como você ainda não definiu nenhum ingrediente, o tamanho dessa variável será 0, ou seja, no for, a sua condição não será verdadeira (posicao < ingredientes.length). Entendeu?

Mas então, não deveria rodar nenhum dos ifs, pq "posicao" = 0 não é < "ingredientes.length", não? Mas se eu coloco o segundo if fora do for, o código roda.

Vamos lá...

Se você colocar o segundo if fora do for, qu eé o if abaixo:

    if( existe == false) {
            ingredientes.push(ingrediente);
            contador++;
   }

A variável "existe" será "false", então vai entrar no if, porque não passou pelo for, entendeu?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software