← Voltar na listagem

29 de maio de 20234 min de leitura

Desvendando a função Array.flatMap() em JavaScript

Vamos explorar a função flatMap em JavaScript, uma ferramenta poderosa para manipular e simplificar arrays complexos e aninhados.

Olá, pessoal! Como vocês estão? Hoje, vamos mergulhar no universo fascinante do JavaScript para desvendar um recurso super útil, porém, nem sempre tão conhecido: a função Array.flatMap(). Se você ainda não teve a oportunidade de conhecê-la, não se preocupe. Juntos, vamos dar uma olhada em como funciona essa maravilha.

Entendendo o conceito de flatMap

Primeiro, para entender o que o flatMap faz, precisamos quebrar o nome em duas partes: 'flat' e 'map'. A parte 'map', você provavelmente já conhece. Ela é uma função muito popular em JavaScript que percorre cada elemento de um array e retorna um novo array transformado conforme a função que você passa para ela.

Já a parte 'flat' pode ser um pouco menos familiar. O método 'flat' é usado para achatar um array, ou seja, para transformar um array de arrays em um único array. Agora imagine a beleza que é juntar essas duas funções em uma só? É exatamente isso que o flatMap faz.

A função flatMap é como se você aplicasse o map e, em seguida, o flat. Isso é incrivelmente útil quando você tem um array de arrays e quer não apenas transformar os elementos dentro dos arrays internos, mas também quer achatar tudo em um único array.

Exemplo de uso

Para ilustrar, vamos a um exemplo simples.

let numeros = [1, 2, 3, 4, 5];

let quadradosEclones = numeros.flatMap((num) => [num * num, num * num]);

console.log(quadradosEclones); 
// [1, 1, 4, 4, 9, 9, 16, 16, 25, 25]

Nesse exemplo, estamos usando o flatMap para transformar cada número do nosso array 'numeros' em seu quadrado e criar um clone do resultado. Como cada número gera um array de dois elementos, acabamos com um array de arrays. Mas o flatMap cuida disso para nós, achatando tudo em um único array.

Vamos a mais um exemplo. Dessa vez, vamos considerar uma situação um pouco mais complexa, onde temos um array de objetos e cada objeto contém um array interno.

Vamos supor que temos uma lista de autores e cada autor tem uma lista de livros que ele escreveu. Nosso objetivo é criar uma lista única de todos os livros de todos os autores. Para isso, vamos usar a função flatMap.

let autores = [
  { nome: 'Autor 1', livros: ['Livro 1', 'Livro 2'] },
  { nome: 'Autor 2', livros: ['Livro 3', 'Livro 4', 'Livro 5'] },
  { nome: 'Autor 3', livros: ['Livro 6'] },
];

let todosOsLivros = autores.flatMap((autor) => autor.livros);

console.log(todosOsLivros); 
// ['Livro 1', 'Livro 2', 'Livro 3', 'Livro 4', 'Livro 5', 'Livro 6']

Neste exemplo, cada autor é um objeto com um nome e um array de livros. Quando aplicamos a função flatMap, estamos passando uma função que retorna o array de livros de cada autor. O resultado disso seria um array de arrays de livros. Mas, como estamos usando flatMap, o JavaScript acha todos esses arrays para nós, resultando em um único array com todos os livros de todos os autores.

Este é um exemplo de como a função flatMap pode ser útil para manipular dados complexos e aninhados. Com ela, você pode facilmente transformar e achatá-los em uma estrutura mais simples e fácil de manusear. Lembre-se, o segredo está na função que você passa para o flatMap. Essa função determina como cada elemento do seu array original será transformado.

Quando Usar

A função flatMap é extremamente útil quando você precisa aplicar uma função que retorna um array para cada elemento do seu array original e quer que o resultado seja um único array achatado, em vez de um array de arrays. Ela ajuda a simplificar seu código e a torná-lo mais legível.

Considerações finais

E aí, o que achou? A função flatMap é um recurso super útil que pode tornar seu código mais eficiente e legível. Espero que este post tenha te ajudado a entender um pouco mais sobre ela. Agora é hora de colocar a mão na massa e experimentar por conta própria!

Lembre-se, a prática leva à perfeição. Quanto mais você usar e entender essas funções, mais confortável se sentirá ao trabalhar com arrays em JavaScript.