Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Meu código pede o ingrediente 1 em loop

Quando rodo meu código no navegador, fico sendo solicitada infinitamente pelo ingrediente 1. Comparei meu código com o gabarito e não encontrei nenhuma diferença...... Alguém poderia me 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 achou = false;

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

            if (ingredientes[posicao] == ingrediente){

                achou = true
                break
            } 

            if (achou == false) {

                ingredientes.push(ingrediente);

                contador++;
            }
        }


    }

    console.log(ingredientes);
</script>

1 resposta
solução!

Oi Maria Eduarda, tudo bem?

Certo, vamos lá. De fato, seu código estaria idêntico ao do gabarito do exercício se não fosse por um detalhe: uma das chaves que você abriu foi fechada no lugar errado, o que impede que as instruções sejam lidas da maneira que o exercício nos pede.

Quando você abriu o for, a instrução dentro dele seria o if que continha uma condição para barrar a repetição, mas você esqueceu de fechar o bloco e seguiu o código inserindo mais um if, e só o fechou no final do código, repare pela quantidade de chaves '{' no fim do seu código, são 3, ou seja, o código está lendo o for num bloco maior do que devia.

Para resolver o problema, basta fechar o bloco do for após o primeiro if, para que ele siga a instrução correta e pare a repetição.


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

            if( ingredientes[posicao] == ingrediente) {

                existe = true;
                break;
            }
        }

Ficou claro dessa forma? Espero que tenha te ajudado =) e em caso de dúvidas não hesite em utilizar o fórum, ok? Abraços.