Aquí está la pregunta...
"Agregue código a la función bienCallback en el lugar marcado "AÑADIR CÓDIGO AQUÍ" para lograr los registros de consola deseados. El resultado de usar cualquieraCallback para combinar dos devoluciones de llamada en una devolución de llamada y luego pasar esa devolución de llamada a filterArray debe coincidir con los resultados de simplemente pasando las dos devoluciones de llamada a anyFilter en el desafío anterior ".
Aquí está la solución del desafío anterior que sé que funciona...
function eitherFilter(array, callback1, callback2) { // ADD CODE HERE const newArr = []; for (let i = 0; i < array.length; i++) { if (callback1(array[i]) || callback2(array[i])) { newArr.push(array[i]); } } return newArr; } // Uncomment these to check your work! const arrOfNums = [10, 35, 105, 9]; const integerSquareRoot = n => Math.sqrt(n) % 1 === 0; const over100 = n => n > 100; console.log(eitherFilter(arrofNums, integerSquareRoot, over100)); // should log: [105, 9]Aquí está el código dado ...
function eitherCallback(callback1, callback2) { // ADD CODE HERE } // Uncomment these to check your work! function filterArray(array, callback) { const newArray = []; for (let i = 0; i < array.length; i += 1) { if (callback(array[i], i, array)) newArray.push(array[i]); } return newArray; } const arrOfNums = [10, 35, 105, 9]; const integerSquareRoot = n => Math.sqrt(n) % 1 === 0; const over100 = n => n > 100; const intSqRtOrOver100 = eitherCallback(integerSquareRoot, over100); console.log(filterArray(arrOfNums, intSqRtOver100)); // should log: [105, 9]Estoy confundido en cuanto a qué hacer. ¿Puede alguien darme unos consejos? ¡No sé ni cómo empezar a responderla!
Gracias por adelantado...
No necesita mucho, todo lo que necesita es hacer que eitherCallback sea una función de orden superior que tome las dos devoluciones de llamada como argumento inicial, y ejecute y devuelva la lógica que está llevando a cabo aquí:
callback1(array[i]) || callback2(array[i])Me gusta:
const eitherCallback = (callback1, callback2) => x => callback1(x) || callback2(x); // Uncomment these to check your work! function filterArray(array, callback) { const newArray = []; for (let i = 0; i < array.length; i += 1) { if (callback(array[i], i, array)) newArray.push(array[i]); } return newArray; } const arrOfNums = [10, 35, 105, 9]; const integerSquareRoot = n => Math.sqrt(n) % 1 === 0; const over100 = n => n > 100; const intSqRtOrOver100 = eitherCallback(integerSquareRoot, over100); console.log(filterArray(arrOfNums, intSqRtOrOver100)); // should log: [105, 9]También puedes probar:
function eitherCallback(callback1, callback2) { // ADD CODE HERE return (element, i, array) => { //element representing array[i] return callback1(element, i, array) || callback2(element, i, array); } }La idea es que cualquiera de las devoluciones de llamada devuelva un valor real para cualquiera de las devoluciones de llamadas llamadas dentro de la función. Además, creo que la "x" en la solución anterior de cierto rendimiento representa los argumentos array[i], i y array. Es solo una forma más limpia de escribirlo con x en lugar de tener que repetirlo todo. Mantener las cosas SECA.