29 de maio de 2023 • 4 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.