
David Marín Pineño
PreguntaEntiendo que el método shift es para quitar el primer elemento del array estudiantes y dárselo a estudiante, lo que no entiendo es por qué estudiantes pierde un elemento, es decir, cuando ponemos estudiantes.shift(), es para modificar el valor de estudiante, pero en ningún momento guardamos en el valor estudiantes ese cambio, por lo tanto nunca debería valer menos de 4 porque nunca pierde ese valor, por lo que este loop debería ser infinito porque 4 siempre sería mayor que 0, entiendo que me estoy equivocando en algo, pero no se en qué, alguien sabría explicarme mi error?

Daniel Ruiz
¿no se deberia borrar "maria" desde el primer ciclo?

Joel Dominguez Merino
También tenia la misma duda. Entiendo lo que hacia pero no del todo el que pasaba con el array. Muchas Gracias a todos por sus respuestas.

Denisse Rivas
En el momento que llamas a la variable "estudiante" se lleva a cabo el shift sobre el array "estudiantes". "estudiantes.shift()" retorna el valor del elemento que se elimina de la primera posicion Y TAMBIEN modifica el array "estudiantes"
Héctor José Morales Hernández
david, estudiantes, pierde un elemento por que shift(), elimina el primer elemento..al momento que el aplica el shift() en el while, el estudiantes.shift() elimina el elemento, guarda en estudiante, muestra en el console.log, y repite el while, ahora en estudiantes.lenght se encuentra, solo 3 elementos del array.. alli es donde guarda los elementos de estudiantes y repite el ciclo nuevamente y para la otra vuelta, vale 2 y asi... espero a ver resuelto tu duda.

Alberto Perdomo
David existen metodos que modifican directamente la variable, como es el caso de shift. Ahora el porque que se guarde en una variable el retorno del metodo altera también la variable original, es por el alcance de estudiantes, este tiene un alcance más global que estudiante, por lo que se ve afectado. Esto puede parecer complicado pero en realidad ahorra bastante codigo.