Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Intenté hacerlo más simple y me generó una duda

Me gustaría saber porqué funciona filtrando sólo que no se repitan dos ingredientes contiguos y no con otros de otro orden de la lista...

<script>

    var ingredientes = [];
    var cantidad = parseInt(prompt("¿Cuántos ingredientes vas a añadir?"));
    var contador = 1;

    while( contador <= cantidad) {
        var ingrediente = prompt("Informe el ingrediente " + contador);
          if (ingrediente != ingredientes) {
            ingredientes.push(ingrediente);
            contador++;
          } else {
            alert("Ingrediente repetido, por favor elija uno diferente");
          }
    }

    console.log(ingredientes);

</script>
2 respuestas
solución!

Hola Marianela, esto sucede porque la condición if de tu código compara un ingrediente con todo el array llamado ingredientes y no con cada elemento. Es decir, si son 2 ingredientes se compara el último ingrediente con el array ingredientes y como éste solo contiene 1 elemento funcionará de tal modo que si no es igual se agrega y si es igual lo rechaza . Ahora, si son 3 ingredientes va a comparar el tercer ingrediente no con cada uno de los ingredientes agregados sino con el total de elementos del array, y como eso es distinto al ingrediente se cumplira la condición y se agregara el ingrediente aunque esté repetido. Por eso, la necesidad de utilizar un for para comparar un elemento con cada uno de los elementos del array. Te dejo un ejemplo de lo que hace tu código. Un saludo

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Hola, las correcciones de Luis son muy claras y didacticas, gracias por tu dedicación. Saludos