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

Dúvida exercício receita.

Boa noite!!

Estou com uma pequena dúvida. Eu fui resolver um dos últimos exercícios aqui sobre os Arrays e acabei ficando com uma dúvida.

<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);

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

          var repetido = false;

          if(ingrediente == ingredientes[posicao]) {

            repetido = true
            break;
          }
        }

        if (repetido == false) {

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

    console.log(ingredientes);

</script>

Eu consegui resolver o exercício porém um dos erros que cometi enquanto resolvia foi colocar o (var repetido = false;) dentro do meu for igual está no código a cima, quando fiz isso ele não parava de me pedir o ingrediente 1 e não consegui entender o porque, alguém poderia me explicar ?

1 resposta
solução!

Olá Felipe.

Esse problema acontecia porque a declaração da variável repetido estava dentro do escopo do seu laço for. Logo, quando o código fazia a verifição if (repetido == false), a variável repetido não existia e o JavaScript considerava essa variável não declarada dentro do escopo do while (só estava no escopo do for) com valor undefined, que é diferente de false. Ou seja, o contador nunca era incrementado e o código nunca saía do while.