Método flatMap
O método flatMap retorna
um novo array, criado após
a aplicação de um callback,
especificado no parâmetro do método,
a cada elemento do array original.
À primeira vista, o método flatMap
é semelhante ao método map, mas sua principal diferença
é que ele sempre retorna um array unidimensional.
Sintaxe
let newArray = array.flatMap(função);
Exemplo
Vamos obter um novo array,
usando o método flatMap:
let arr = ['a', 'b', 'c'];
let res = arr.flatMap(function(elem) {
return elem + '!';
});
console.log(res);
Resultado da execução do código:
['a!', 'b!', 'c!']
Exemplo
Vamos obter um novo array a partir de um array original composto por números:
let arr = [1, 2, 3, 4, 5];
let res = arr.flatMap(function(elem) {
return elem + 2;
});
console.log(res);
Resultado da execução do código:
[3, 4, 5, 6, 7]
Exemplo
Vamos tentar aplicar o método
flatMap a um array com o primeiro
nível de aninhamento:
let arr = [1, 2, 3, [4, 5]];
let res = arr.flatMap(function getElem(elem){
return elem + 2;
});
console.log(res);
Após a execução do código, veremos que as condições da função foram aplicadas ao subarray, tratando-o como um único elemento. Portanto, chamar este método em arrays aninhados não faz sentido:
[3, 4, 5, '4,52']
Exemplo
Se não quisermos nos preocupar com o nível de aninhamento,
e sim unir todo o array, usamos o parâmetro Infinity:
let arr = ['a', 'b', ['c', 'd', ['e', 'f', ['g', 'h', ['i']]]]];
let res = arr.flatMap(Infinity);
console.log(res);
Resultado da execução do código:
[
'a', 'b', 'c',
'd', 'e', 'f',
'g', 'h', 'i'
]
Exemplo
Vamos aplicar dois métodos ao array:
flatMap e map, sendo que no parâmetro de ambos os métodos
será especificada uma função que torna o array bidimensional:
let arr = [1, 2, 3, 4, 5, 6];
let res1 = arr.map(elem => [elem * 3]);
let res2 = arr.flatMap(elem => [elem * 3]);
console.log('método map', res1);
console.log('método flatMap', res2);
Resultado da execução do código:
'método map' [[3], [6], [9], [12], [15], [18]]
'método flatMap' [3, 6, 9, 12, 15, 18]
Veja também
-
o método
flat,
que retorna um array a partir de subarrays