Sé cómo usar Javascript para bucles para recorrer matrices. Pero todavía no entiendo completamente qué está haciendo array.length + 1, específicamente la parte +1.
Cuando uso un bucle for, sé que es así
for(let i = 0; i < array.length; i++){...}Pero también estoy viendo esto.
for(let i = 0; i < array.length + 1; i++){...}Anteriormente pensé que array.length + 1 era lo mismo que dejar i = 1 pero mi código no funcionó al hacer eso, por ejemplo
for(let i = 1; i < array.length; i++)no es lo mismo que el bucle for anterior. ¿Alguien puede explicar por qué?
Este
for(let i = 0; i < array.length; i++){...} recorre desde los índices 0 hasta array.length - 1 . Por ejemplo, con una matriz con 3 elementos, itera sobre i s de 0, 1 y 2.
Este
for(let i = 0; i < array.length + 1; i++){...} es extraño. Recorre desde los índices 0 hasta array.length . Por ejemplo, con una matriz con 3 elementos, esto itera sobre i s de 0, 1, 2 y 3. Esto significa que si algo dentro del bucle hace referencia a la array[i] , ese valor no estará undefined en la iteración final.
La mayoría de las veces, ver algo así me haría pensar que alguien cometió un error tipográfico o lógico, aunque no me sorprendería ver algunos algoritmos que usaron algo así.
Este
for(let i = 1; i < array.length; i++) itera desde los índices 1 hasta array.length - 1 . Por ejemplo, con una matriz con 3 elementos, itera sobre i s de 1 y 2.
Habrá una iteración menos que elementos en la matriz. Esto significa que, si el cuerpo del bucle siempre hace referencia a array[i] y no a array[i - 1] , el primer elemento de la matriz siempre se omitirá.
Esto es mucho menos común que comenzar en 0, pero podría verse, especialmente cuando la lógica requiere comparar ciertos elementos adyacentes entre sí (por ejemplo, array[0] con array[1] y array[1] con array[2] , etc.).
Array.length + 1en pocas palabras, es solo la cantidad de elementos en la matriz y agrega 1.
Una matriz con n elementos tiene una longitud de n, por lo que su ciclo se ejecutará n - i veces cuando use array.length . Si let i =0 , entonces su bucle se ejecutará n veces. Si i = 1 , entonces su ciclo se ejecutará n-1 veces si usa array.length . Entonces te faltará 1 iteración de tu ciclo.
Si necesita usar i=1 para comenzar sus iteraciones, debe usar array.length +1 para obtener el número equivalente de iteraciones.
for(let i =0;i<array.length;i++){} // n iterationses el mismo número de iteraciones que
for(let i= 1;i<array.length +1;i++){} // n iterations for(let i=1;i<array.length;i++){} // n-1 iterationssiempre será 1 iteración menos.
Y recuerde, la indexación de matrices utiliza un contador 0-based , por lo que array[0] es el primer elemento de cada matriz.