Estoy respondiendo a este ejercicio en FreeCodeCamp aquí está la instrucción Drop it Dado el array arr, repita y elimine cada elemento comenzando desde el primer elemento (el índice 0) hasta que la función func devuelva verdadero cuando el elemento iterado se pasa a través de él.
Luego, devuelva el resto de la matriz una vez que se cumpla la condición; de lo contrario, arr debe devolverse como una matriz vacía.
esto es lo que tengo hasta ahora. Utilicé la función de mapa para iterar los índices de la matriz y luego verifiqué si cumplía con la condición del parámetro de función dentro del mapa. En este caso, la función debería devolver solo los números menores que 3, pero no puedo deshacerme de 3 cuando lo devuelvo.
function dropElements(arr, func) { return arr.map(x => func(x) ? x : ""); } console.log(dropElements([1, 2, 3], function(n) {return n < 3; }));Sugeriría usar un filtro, que devuelve otra matriz:
function dropElements(arr) { return arr.filter(x => x < 3); } const someArray = [1, 2, 3]; console.log(dropElements(someArray)); // [1, 2]Puede cerrar un valor booleano y mantener un valor true para el resto de la matriz para filtrar.
Fuente de datos/resultados: https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/drop-it
function dropElements(arr, func) { return arr.filter((b => v => b ||= func(v))(false)); } console.log(...dropElements([1, 2, 3], function(n) { return n < 3; })); // [1, 2, 3] console.log(...dropElements([1, 2, 3, 4], function(n) { return n >= 3; })); // [3, 4] console.log(...dropElements([0, 1, 0, 1], function(n) { return n === 1; })); // [1, 0, 1] console.log(...dropElements([1, 2, 3], function(n) { return n > 0; })); // [1, 2, 3] console.log(...dropElements([1, 2, 3, 4], function(n) { return n > 5; })); // [] console.log(...dropElements([1, 2, 3, 7, 4], function(n) { return n > 3; })); // [7, 4] console.log(...dropElements([1, 2, 3, 9, 2], function(n) { return n > 2; })); // [3, 9, 2]Dice "eliminar elementos", así que voy a mutar la matriz que se pasó.
function dropElements(arr, func) { while (arr.length && !func(arr[0])) { arr.splice(0, 1); } return arr; } console.log(dropElements([1, 2, 3], function(n) {return n < 3; }));