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

[Dúvida] O ingrediente está repetindo, pq?

Não era para repetir o ingrediente, nesse código, com o true e false, mas, está aceitando ingrediente repetido, pq?

<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 (i = 1; i <= ingredientes.length; i++) {
      if (ingrediente == ingredientes[i]) {
        achou = true;
        break;
      }
    }
    if (achou == false) {
      ingredientes.push(ingrediente);
      contador++;
    }
  }

  console.log(ingredientes);
</script>

3 respostas
solução!

Descobri o problema:

Achei 2 erros,

na parte do for ficou faltando o "var antes do i" ficaria: for (var i = 1; i <= ingredientes.length; i++) {

O outro erro é que você inicializou a variavel "i" com "1" . E os arrays começam sempre no "0" o que está acontecendo é que ele não está checando o primeiro array que seria o 0 exemplo: [0,1,2,3,4]

Os arrays sempre começam no zero.

Modificando o i para iniciar em 0 o seu codigo vai funcionar

Ficando assim: for (var i = 0; i <= ingredientes.length; i++) {

<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;
    
// repare aqui as mudanças a variavel "i" foi iniciada em "0" e antes dela tem o "var"
    for (var i = 0; i <= ingredientes.length; i++) {
      if (ingrediente == ingredientes[i]) {
        achou = true;
        break;
      }
    }
    if (achou == false) {
      ingredientes.push(ingrediente);
      contador++;
    }
  }

  console.log(ingredientes);
</script>

Muito Obrigada!