2
respostas

Receita Yan - Não entendi o motivo do programa não estar rondando

var ingredientes = [];

var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

var contador = 1;

while(contador <= quantidade) {

    var ingrediente = prompt("Informe o ingrediente " + contador);

    ingredientes.push(ingrediente);

    if (ingrediente == ingrediente[contador]){

        break;
    }else{

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

console.log(ingredientes);

o break não esta sendo executado e os ingredientes estão sainda dobrados, não entendi o motivo
2 respostas

Eu acredito que os ingredientes estão entrando mais de uma vez porque tu tá fazendo a adição antes da verificação.

var ingrediente = prompt("Informe o ingrediente " + contador);

ingredientes.push(ingrediente); <-- AQUI TU TÁ adicionando e só depois tu verifica.

if (ingrediente == ingrediente[contador])

tenta testar isso e volta aqui pra dizer como tu resolveu, se possível.

obrigado por compartilhar tua dúvida!

Então,

Para esse código, é melhor usar o WHILE e dentro dele o FOR. Dentro do FOR vai ter um IF e fora do FOR, mas ainda dentro WHILE vai ter outro IF e é nesse 2º IF o momento de inserir o ingrediente. Se adicionar antes, não passa pelo processo de verificação de repetição dentro da lista.

Sobre essa dúvida aí eu expliquei aqui: https://cursos.alura.com.br/forum/topico-array-de-tamanho-inesperado-195116

Sobre o IF, ele não vai funcionar para verificar se há itens repetidos dentro de uma lista.

Também fiz uma explicação exatamente sobre isso aqui: https://cursos.alura.com.br/forum/topico-eu-resolvi-sem-usar-o-for-tem-problema-198017

Espero ter ajudado. Sucesso na sua jornada!!