1
resposta

Não existe ingrediente repetido aqui!

<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 < ingrediente.length; posicao ++){

            if(ingredientes[posicao] !== ingrediente){

                 ingredientes.push(ingrediente);
                   contador++;

            }else{

                alert("Ingrediente já existente");
            }


        }

    }

    function mostra(frase){
        document.write(frase);
        pulaLinha();

    }

    function mostraSP(frase){
        document.write(frase);
    }

    function pulaLinha(){
        document.write("<br>");
    }

    mostraSP("<h2> Lista de Ingredientes: </h2>")

    for(var i=0; i< ingredientes.length; i++){
        var mot = ingredientes[i];
             mostra("<h2>"+ mot + "</h2");
    }

    console.log(ingredientes);
</script>
1 resposta

Oi, Thyago! Tudo bem?

Desculpa a demora por um retorno

Adorei que você buscou uma lógica diferente para chegar no mesmo resultado proposto pela questão! Porém, testando o seu código, podemos notar que ele não nos fornece a funcionalidade esperada. O comando não adiciona diferentes nomes de ingredientes ao array e não impede que os ingredientes se repitam.

É necessário então a utilização de uma variável auxiliar, que chamaremos de existe, de forma que os valores booleanos (true e false) definirão o comportamento das estruturas condicionais do código (if e for). Apenas dessa forma o programa consegue percorrer todo o array comparando-o com o ingrediente fornecido, seguindo as instruções esperadas.

Fica abaixo o código corrigido:

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

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

            if( ingredientes[posicao] == ingrediente) {

                existe = true;
                break;
            }
        }

        if( existe == false) {

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

     function mostra(frase){
        document.write(frase);
        pulaLinha();

    }

    function pulaLinha(){
        document.write("<br>");
    }

    mostra("<h2> Lista de Ingredientes: </h2>")

    for(var i=0; i< ingredientes.length; i++){
        var mot = ingredientes[i];
             mostra("<h2>"+ mot + "</h2");
    }


    console.log(ingredientes);
</script>

Para melhor visualização do problema abordado sugiro o teste dos dois códigos, executando-os no browser e comparando os seus comportamentos.

Um forte abraço e parabéns pelo seu desempenho!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓. Bons Estudos!