DevPath · Aprenda a programar ESPTEN

Programação funcional

Funções de ordem superior e map/filter/reduce

Funções de ordem superior

Uma função de ordem superior é aquela que recebe uma função como argumento ou retorna uma função. Em JavaScript as funções são "valores de primeira classe": podem ser passadas e retornadas como qualquer outro dado.

Os três pilares da programação funcional com arrays são funções de ordem superior:

map: transformar cada elemento

const numeros = [1, 2, 3];
const dobros = numeros.map((n) => n * 2); // [2, 4, 6]

filter: manter alguns deles

const pares = numeros.filter((n) => n % 2 === 0); // [2]

reduce: combinar tudo em um único valor

const soma = numeros.reduce((acumulado, n) => acumulado + n, 0); // 6

reduce recebe um acumulador e cada elemento, e retorna o novo acumulador. O segundo argumento (0) é o valor inicial. É a mais poderosa: com reduce você pode expressar tanto map quanto filter.

Essas funções não mutam o array original: retornam um novo, o que combina com a imutabilidade.

Exemplos

Encadear map, filter e reduce

const numeros = [1, 2, 3, 4, 5, 6];
const resultado = numeros
  .filter((n) => n % 2 === 0) // [2, 4, 6]
  .map((n) => n * n)          // [4, 16, 36]
  .reduce((a, n) => a + n, 0); // 56
console.log(resultado);
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
← Funções puras e imutabilidadeComposição e currying →