Aquí la longitud se declara antes del bucle for y la función da la respuesta correcta.
La consola: []
function dropElements(arr, func) { let len = arr.length; for (let i = 0; i < len; i++) { if (!func(arr[0])) { arr.shift(); } } return arr; } console.log(dropElements([1, 2, 3, 4], function(n) { return n > 5; }));Ahora la longitud se usa directamente en el bucle for y la función deja atrás dos elementos de la matriz. La consola: [3,4]
function dropElements(arr, func) { for (let i = 0; i < arr.length; i++) { if (!func(arr[0])) { arr.shift(); } } return arr; } console.log(dropElements([1, 2, 3, 4], function(n) { return n > 5; }));