La pregunta es:
"Agregue código a las funciones func1 y func2 en los lugares marcados como "AGREGAR CÓDIGO AQUÍ" para lograr los registros de consola deseados".
function filterArray(array, callback) { const newArray = []; for (let i = 0; i < array.length; i += 1) { if (callback(array[i])) newArray.push(array[i]); } return newArray; } const arrOfNums = [1, 2, 3, 4, 5]; function func1(num) { // ADD CODE HERE } function func2(num) { // ADD CODE HERE } console.log(filterArray(arrOfNums, func1)); // should log: [2, 4] console.log(filterArray(arrOfNums, func2)); // should log: [1, 3, 5]En func1 probé:
if (num % 2 === 0) { num = num; } else { num = null; }En func2 probé:
if (num % 2 !== 0) { num = num; } else { num = null; }No estoy seguro de qué otra manera abordar este problema. Mi solución no funcionó y las llamadas a console.log devolvieron matrices vacías...
¡Gracias de antemano!
La función de devolución de llamada debe devolver un valor booleano, si es verdadero, entonces la función filterArray agrega el elemento a la matriz.
if (callback(array[i])) newArray.push(array[i]);Entonces, esta línea solo llama a newArray.push(array[i]) si el valor de retorno de callback(array[i]) es verdadero.
Solución:
function func1(num) { return (num % 2 === 0); } function func2(num) { return (num % 2 !== 0); }Sus funciones no devuelven nada, pero las funciones de devolución de llamada para el filter deben devolver un valor booleano para cada valor.
Puedes usar
return num % 2 === 0;resp.
return num % 2 !== 0;Necesitas devolver verdadero/falso
function filterArray(array, callback) { const newArray = []; for (let i = 0; i < array.length; i += 1) { if (callback(array[i])) newArray.push(array[i]); } return newArray; } const arrOfNums = [1, 2, 3, 4, 5]; function func1(num) { // return num % 2 === 0; if (num % 2 === 0) { return true; } else { return false; } } function func2(num) { // return num % 2 !== 0; if (num % 2 !== 0) { return true; } else { return false; } } console.log(filterArray(arrOfNums, func1)); // should log: [2, 4] console.log(filterArray(arrOfNums, func2)); // should log: [1, 3, 5]