Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

O método flatMap() primeiro mapeia cada elemento usando uma função de mapeamento e, em seguida, nivela o resultado em uma nova array. É idêntico a um map seguido por um flat de profundidade 1, mas flatMap é bastante útil e mesclar ambos em um método um pouco mais eficiente.{{EmbedInteractiveExample("pages/js/array-flatmap.html")}}

Syntax

var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
    // retorna o elemento para new_array
}[, thisArg])

Parâmetros

callback
Função que produz um elemento de uma nova Array, pegando três argumentos:
 
currentValue
O valor atual sendo processo na array.
indexOptional
O index do valor atual sendo processo na array.
arrayOptional

O map da array que foi chamado.

thisArgOptional
Valor para ser usado como this quando callback estiver sendo executado.

Valor de retorno

Uma nova array com cada elemento sendo o resultado da função callback e achatado ao valor de 1.

Descrição

Veja Array.prototype.map() para uma detalhada descrição da função callback. O método flatMap é idêntico ao map seguido por um chamado a flatten de profundidade 1.

Exemplos

map e flatMap

var arr1 = [1, 2, 3, 4];

arr1.map(x => [x * 2]); 
// [[2], [4], [6], [8]]

arr1.flatMap(x => [x * 2]);
// [2, 4, 6, 8]

//  Só o primeiro nível
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Alternativa

reduce e concat

var arr1 = [1, 2, 3, 4];

arr1.flatMap(x => [x * 2]);
// é equivalente a
arr1.reduce((acc, x) => acc.concat([x * 2]), []);
// [2, 4, 6, 8]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Specificações

Specification Status Comment
Array.prototype.flatMap proposal Rascunho  

Compatibilidade de browser

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support69 No No1 No56 No
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support6969 No No156 No No

1. Available in Firefox Nightly only. See bug 1435813 for status on enabling this by default.

Veja também

Etiquetas do documento e colaboradores

Colaboradores desta página: leonardomarciano, proxy-chan
Última atualização por: leonardomarciano,