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

Comparar posicao do array com comprimento do array antes da primeira atribuiçao

Olá!

Na tag for, é escrito assim:

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

No meu entendimento, no primeiro looping, o teste é feito assim: Posicão 0 é menor do que ingredientes.length?

Entretanto, o array ainda está vazio! Como pode esse teste ser verdadeiro?

No segundo looping, o teste ficaria assim; 1 é menor do que ingredientes.length? E nesse caso, o ingredientes.length teria apenas 1 valor, portanto 1 == 1! Como pode esse teste continuar sendo verdadeiro?

O código do professor funciona perfeitamente bem, mas eu não entendi o motivo. No meu exercicio eu alterei ingredientes.length por Quantidade. E também deu certo.

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



          ingredientes.push(ingrediente);
          contador++;


    }

    console.log(ingredientes);
1 resposta
solução!

Oi Átila tudo bem?

Se o array não tem nenhum elemento o seu comprimento é 0 mesmo. Por isso passou.

Na segunda passagem ele continuou no looping porque era verdadeiro. Tinha um ingrediente. O objetivo desse loop é assegurar que não haja ingredientes repetidos.

Existe um curso https://cursos.alura.com.br/course/chrome-devtools que ensina a analisar o código javascript e páginas web em geral. Muito bom, sugiro fazer esse curso se continuar com dificuldades.

Espero ter ajudado!!!