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

Repete infinitas vezes o while do ingrediente

Não consigo achar meu erro.

<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 igual = false;

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

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

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

        }
   }

    console.log(ingredientes);
</script>
3 respostas

Oi Daniel, o contador++ está no lugar errado. Tente assim:

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

Também percebi outro erro Daniel, nesse mesmo if você está fazendo com que igual receba false, para verificar se o igual é falso você deve acrescentar mais um igual nele if (igual == false)

solução!

Olá Daniel, se não me engano o erro do código está no IF e não na posição do contador, no código você escreveu

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

O igual está recebendo "false", no caso o programa estaria entendendo If(igual) igual=false, assim nunca entrando no IF Tente usar

If(igual==false)

Espero ter ajudado.

É, realmente, tirando o contador do if ele vai para a próxima contagem e não adiciona o elemento repetido no array, já com ele la dentro ele obriga que o usuário digite sempre um ingrediente diferente, acho que desse ultimo jeito é melhor mesmo. xD