Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

¡No hay ingredientes repetidos aquí! (PROCESO MENTAL)

Una disculpa por tanto texto pero mi proceso mental para tratar de enteder estás cuestiones de lógica que aún no manejo con soltura como quisiera, no de éste nivel, espero pronto :) :

  • Tenemos la variable "ingredientes" que es un arreglo vacío al comenzar.
  • Preguntamos al usuario que defina cuantos ingredientes querrá en su lista.
  • Comenzamos el contador de iteraciones en el 1.
  • Para comenzar a preguntar al usuario sus ingredientes, definimos en el while loop que si contador es menor o igual que la cantidad de ingredientes que el usuario declaro, preguntemos el primer ingrediente.
  • Se define que no existe en el arreglo pero seguido, pasamos a checar que sea así, con un for loop, donde establecemos que la primer posicion donde buscaremos en el indice del arreglo "ingredientes" es 0 (la primera posicion).
  • Luego si 0 es menor que el largo (length) del arreglo "ingredientes", le sumamos uno a la posicion en el indice. Luego si ("if") el ingrediente que escribió el usuario es igual que el ingrediente en la posición 0 del arreglo "ingredientes", que fue donde comenzamos, si ya existe (encontrado = true) se detiene el loop (break;), si no!, el ingrediente no existe (encontrado == false) y el ingrediente se agrega al arreglo "ingredientes" ( ingredientes.push(ingredientes); ) y se suma 1 al contador de iteraciones que se definió al inicio.
  • El while loop vuelve a comenzar, hace todo igual, esta vez, el contador es 2, se pide otro ingrediente, se hace el mismo proceso del for loop, que esta en la posición 1 (recordemos que arreglos inician a indexarse, contarse, desde el 0) revisa si existe. Si sí, se corta el for loop (break;) y se reinicia preguntando otro ingrediente y no se aumenta el contador; si no, se ve no existe (encontrado == false) se agrega el ingrediente al arreglo "ingredientes", se aumenta 1 al contador.
  • Vuelve a comenzar el while loop, pero!, el contador ahora siendo 3, ya no es menor ni igual, asi que se detiene el while loop y quedamos con el arreglo "ingredientes" con 2 ingredientes no repetidos propuestos por el usuario.
<meta charset="UTF-8" />

<h1>Recetas de Armando</h1>

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

  // -----------------------------------------

  while (contador <= cantidad) {
    var ingrediente = prompt(
      "Escriba el ingrediente " + contador + " por favor."
    );
    // ingredientes.push(ingrediente); / esto no va aquí

    console.log(ingrediente);

    var encontrado = false;
    // contador++; / esto no va aquí

    //------------------------------------------

    for (i = 0; i < ingredientes.length; i++) {
      if (ingrediente == ingredientes[i]) {
        encontrado = true;
        break;
      }
    }
    if (encontrado == false) {
      ingredientes.push(ingrediente);
      contador++;
    }
  }

  document.write(ingredientes);
  //return ingredientes / esto no va aquí
  //-------------------------------------------
</script>
2 respuestas
solución!

Compañero Roberto Gutierrez:

Quiero agradecerle su aportación, porqué gran parte del codigo que utilice, me base en su codigo y en su explicación, Obviamente le agregue y quite algunas cosas para darle mi toque.

Saludos Virtuales.

En lo que se pueda ayudar, aquí andamos Pedro. Ánimo!