3
respostas

Por que entra em loop infinito se o segundo if estiver dentro do for?

<meta charset="UTF-8">
<h1>Receitas do Henrique </h1>
<script>
    var ingredientes = [];

    var quantidade = prompt("quantos ingredientes voce vai adicionar?");

    var contador = 1;
    while(contador<=quantidade){
        var ingrediente = prompt("digite o ingrediente"+ contador)

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

            if(ingredientes[posicao]==ingrediente){
                achou = true;
                break;
            }


         if (achou==false){
                 ingredientes.push(ingrediente);
                 document.write(ingrediente)
                 document.write("</br>")
                 contador++
            }
        }

        } 
    console.log(ingredientes)



</script>
3 respostas

Acredito ter me equivocado, segue a sugestão do amigo aqui embaixo.

Abraços

Victor Gonzalez

Olá Henrique, tudo certo?

O jeito do código funcionar com os dois 'if' dentro do for é trocar 'ingredientes' por 'quantidade' nessa linha:

      for(var posicao = 0; posicao <quantidade; posicao++){

Acredito que o erro se dá pelo fato do tamanho do array não estar definido no início do for.

O contador++ tem que estar fora do Loop 'for'.

É necessário um 'break;' na última linha do segundo 'if'.

Aconselho também usar o ponto e vírgula ao fim de cada declaração no seu código.

Espero ter ajudado!

<script>
      var ingredientes = [];

var quantidade = prompt("quantos ingredientes voce vai adicionar?");

var contador = 1;
while(contador<=quantidade){
    var ingrediente = prompt("digite o ingrediente"+ contador);

    var achou = false;
    for(var posicao = 0; posicao < quantidade; posicao++){

        if(ingredientes[posicao]==ingrediente){
            achou = true;
            break;
        }


     if (achou==false){
             ingredientes.push(ingrediente);
             document.write(ingrediente);
             document.write("</br>");
             break;
        }
    }contador++;

    } 
console.log(ingredientes);
console.log(quantidade.length);

</script>