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

[Duda] No comprendo cómo es que busca el ingrediente repetido

Ya lo logré, pero no entiendo cómo es que busca en todas las posiciones si le damos el parámetro de la posición actual :-(

    for (var **posicion**= 0; posicion < totalIngredientes.length;posicion++) { 

            if (ingrediente == totalIngredientes[**posicion**])

Este es mi código completo:

<meta charset="UTF-8">

<h1>Recetas de Armando</h1>

<script>

    var totalIngredientes = []; //arreglo que guarda los ingredientes
    var cantidad = parseInt(prompt("¿Cuántos ingredientes vas a añadir?")); // cantidas de ingredientes solicitadas al usuario
    var  contador = 1; // Lleva la cuenta de la cantidad de ingredientes ingresados

    while (contador <= cantidad) { //ingresa cada uno de los ingredientes al arreglo
        var ingrediente = prompt("Anote el ingrediente " + contador); // solicita al usuario la cantidad de ingredientes 
        var encontrado = false; // anota si el ingrediente está repetido.


        for (var posicion= 0; posicion < totalIngredientes.length;posicion++) { // asigna el ingrediente al arreglo

                if (ingrediente == totalIngredientes[posicion]) { // verifica en todas las posiciones si existe el elemento
                    encontrado = true; // si existe, saca del IG y vuelve al for
                    alert ("El ingrediente " + ingrediente + " ya existe en el registro")
                    break;
                }
        }

                if (encontrado==false) { // si no existe, lo agrega con el push
                    totalIngredientes.push(ingrediente);
                    contador++;
                }
    }

    console.log(totalIngredientes);
    alert (totalIngredientes);

</script>
2 respuestas
solución!

¡Hola!

Vamos a demenuzar el código en el que tienes duda, los valores de 'for' indican:

for (var posicion= 0; posicion < totalIngredientes.length; posicion++) {

var posicion= 0 => Indica el valor de inicio del ciclo 'for'.

posicion < totalIngredientes.length => Indica el valor de termino del ciclo 'for', el contador de posición debe llegar hasta la cantidad o tamaño de elementos del arreglo.

posicion++ => Indica el incremento que tendrá posición con cada repetición, para avanzar hacia el valor final. '++', Indica incremento de 1.

En la instrucción condicional if (ingrediente == totalIngredientes[posicion]), la condición es que cada ingrediente que ingresa el usuario se va comparando con cada elemento (ingrediente) del arreglo. La confusión tal vez se da por colocar la variable posición dentro del arreglo totalIngredientes, totalIngredientes[posicion].

posicion se coloca en ese lugar para indicar el valor que contiene el elemento del arreglo que se irá recorriendo conforme avance el ciclo, un ejemplo:

var totalIngredientes = [sal, limón, aceite]

totalIngredientes.length = 3

var totalIngredientes[posicion]

var totalIngredientes[0] <- sal

var totalIngredientes[1] <- limon

var totalIngredientes[2] <- aceite

Supongamos que el arreglo tiene cabida para 4 elementos y el usuario ingresa otro ingrediente (papas), la comparación vendría siendo:

var totalIngredientes[0] <- sal == papas

var totalIngredientes[1] <- limon == papas

var totalIngredientes[2] <- aceite == papas

Espero que ayude.

Aaaaaah ok ok, muchas gracias, claro. Es el nombre de la variable lo que me confundió.