A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Introducci贸n a las Higher Order Functions

18/23
Recursos

Por ahora, todas las funciones que hemos construido se pueden definir como First Class Functions, sin embargo, existen otro tipo de funciones que conocemos como Higher Order Functions o funciones de alto orden y podemos distinguirlas porque reciben otra funci贸n como argumento.

Un buen ejemplo de funciones de alto orden es la funci贸n .map de JavaScript:

// Ciclo for (sin HOF)
const array = [1, 2, 3]
const array2 = []

for (let i = 0; let i < array.length; i++) {
        array2.push(array[i] * 2)
}

// Utilizando la funci贸n .map (HOF)
const array = [1, 2, 3]
const array2 = array.map(item => item * 2)

// Ambas formas devuelven el mismo resultado,
// sin embargo, utilizando HOFs podemos escribir
// c贸digo mucho m谩s legible y f谩cil de entender
console.log(array2) // [2, 4, 6]

Aportes 10

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

.map() forma parte de un grupo de m茅todos disponibles para el tipo de dato array (m谩s bien de su clase prototype) exclusivamente, y que permite hacer un recorrido por los elementos de dicho array y realizar algunas acciones sobre 茅stos utilizando el paradigma de la programaci贸n funcional. Estos m茅todos son:

  • .map(): ejecuta una funci贸n por cada uno de los elementos del arreglo y retorna en s铆 mismo el arreglo resultante (mutado).
  • .forEach(): Similar al m茅todo anterior pero no retorna en s铆 misma el array resultante.
  • .filter(): devuelve un arreglo con los elementos que cumplen con una condici贸n buleana determinada por una funci贸n que se pasa por par谩metro.
  • .reduce(): aplica una funci贸n definida a los diferentes elementos del arreglo para obtener a fin de cuentas un valor resultante. Es similar a una funci贸n de agregado.

Como complementar con las High Order Functions recomiendo usar tambien la notaci贸n point free al definir nuevas funciones. Esta notacion nos permite invocar funciones sin hacer referencia a los valores de entrada.

Por ejemplo:

const even = x => x % 2 === 0;

const filtered = [1, 2, 3, 4, 5, 6].filter(even); // => [2, 4, 6]

鈿 Los Higher Order Components (HOCs) son funciones que reciben y devuelven un componente mucho modificado, son muy utilizados en librer铆as como React.js para reutilizar o a帽adir funcionalidades a nuestros componentes.

Peeero cada vez se utilizan menos porque hay otros patrones (Render Props y React Hooks) que nos otorgan los mismos resultados pero con c贸digo (componentes) a煤n m谩s legibles y f谩ciles de escribir 馃憣.

Las funciones de alto orden (HOF) pueden entenderse como funciones que reciben como par谩metro a otras funciones. Bajo esa premisa, la funci贸n map puede ser implementada de la siguiente forma

const map = (array, transform) => {
    const mapped = []
    for (let i = 0; i < array.length; i++) {
        mapped.push(transform(array[i]))
    }
    return mapped
}

Y ser usada as铆

map([1, 2, 3], (number) => number * 2) // [2, 4, 6]

Obviamente esto ya existe en el core de Javascript pero est谩 bueno saber c贸mo utilizar el concepto de HOF para alguna situaci贸n particular que se nos presente.

Un buen repaso

const array1 = [1, 2, 3]
const array2 = array1.map(item => item * 2)
console.log(array2)

Otros datos interesantes de .map en js es que es inmutable, por lo que nos regresa un nuevo array, en vez de modificar el que ya esta hecho y que siempre regresa la misma cantidad de valores que el array al que se esta iterando鈥

Vale, 驴Entonces las HOF son pr谩cticamente los callbacks? En el curso de Firebase por Bedu vimos que las HOF eran aquellas funciones que llamaban a otras, y estas funciones lo que hac铆an eran simplificar cosas usando otras funciones que hac铆an tareas espec铆ficas

funciones como map. filter, reduce, find son elementales que las usemos en nuestros desarrollos!

P茅sima explicaci贸n - P茅simo profesor!

First Class function

Funciones de primera clase cuando las funciones son tratadas como cualquier otra variable.

Por ejemplo, en ese lenguaje, una funci贸n puede ser:

  • Pasada como argumento a otras funciones.
  • Retornada por otra funci贸n.
  • Asignada a una variable.