Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

duda de iteracion

tengo un error de concepto, ojala alguienme lo aclare, cuando el for empieza a iterar se supone que el valor de la variable posicion es 0, y cuando el compara el valor del input con el valor de secretos[posicion] que es el indice 0 de la variable secretos, ese indice 0 es un 3, pero si yo pongo 5, que vendria a ser el indice 1 de la variable secretos ---------secretos[1]----, o mismamente los indices posteriores de la variable, tambien me los vale, siendo que es la primera iteracion solo deberia aceptar el 3 por respuesta, porque no ha recorrido los demas indices, (dejo el codigo abajo, ya lo tengo completo pero le corto los pedazos que no tengan relevancia en la pregunta)

var secretos = [3,5,7,9]
var input = document.querySelector("input")

function verificar(){
     var encontrado = false

    for (recorrido=0;recorrido<= secretos.length;recorrido++){

        if(parseInt(input.value) == secretos[recorrido]){

            alert("Usted acerto")
            encontrado = true
            break

        }
    }
    if(encontrado == false) {

        alert("Usted erró")

    }
2 respuestas

No se si entendí muy bien la duda. Un tema es posición (por defecto inicia desde cero, se puede modificar), otro es el valor que esta en cada posición; también esta el recorrido ("busqueda")y es diferente a limitar entre que valores puedes digitar(te faltaría limitar).

Cuando corres el programa y pones por ejemplo el 7 (el cual está en la posición 2), lo que hace es que dentro del for va a comparar si el valor es igual al valor de la posición actual. En este caso empezamos en 0 verdad, cuando hace la instrucción if, ese 7 no es igual a 3, que está en la posición 0, por lo tanto, no se cumple la condición dentro del if, entonces se sale y continua la siguiente iteración. En el for ponemos que la posición debe sumar más 1 en cada iteración. Entonces, sigue la posición 1, que es el 5, vuelve a verificar en el if si 7 es igual a 5, no es así, entonces hace la siguiente iteración. Ahora la posición será 3, verificamos si 7 es igual a 7 (que está en la posición 3), ahora sí se cumple nuestro if, aparecerá que acertamos y ahí mismo se cierra la iteración for.

Recuerda que tooodo este proceso se hace en milisegundos, además los datos del array son poquitos, por lo que lo hace al instante.

Si queremos volver a poner otro valor, en este caso el 3, el for se reinicia, la posición vuelve a ser 0, y hace el mismo procedimiento hasta que el valor coincida con el valor de la posición actual.

No sé si me expliqué bien jeje, espero eso resuelva la duda!

Por cierto, en tu código dentro del for, deber ser recorrido< secretos.length, recuerda que empezamos en 0, se ve algo así [0,1,2,3,], entonces el for debe parar cuando recorrido sea 3. El valor de secretos.length es 4. Por lo tanto no puede ser menor igual que 4, ya que nuestro array termina en el recorrido 3. Así que debe ser recorrido menor que secretos.length.