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

O método flat() cria um novo array com todos elementos sub-arrays concatenados nele de forma recursiva até a profundidade especificada.

Sintaxe

var novoArray = arr.flat(depth)

Parâmetros

depth Optional
O nível de profundidade especifíca o quanto um array aninhando deve ser achatado. O Default é 1.

Retorno

Um novo array com os elementos sub-array concatenados nele.

Examplos

Achatando arrays aninhados

var arr1 = [1, 2, [3, 4]];
arr1.flat(); 
// [1, 2, 3, 4]

var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]

var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]

Achatando e buracos em array

o método flat remove espaços vazios do array:

var arr4 = [1, 2, , 4, 5];
arr4.flat();
// [1, 2, 4, 5]
 

Alternativa

reduceconcat

var arr1 = [1, 2, [3, 4]];
arr1.flat();

//achatar array de nível único
arr1.reduce((acc, val) => acc.concat(val), []);
// [1, 2, 3, 4]

//para achatamentos mais profundos, use recursividade com reduce e concat
var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];

(function flattenDeep(arr1){
   return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
})(arr1);

// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]


Especificações

Especificação Status Comentários
Array.prototype.flat proposal Draft  

Compatibilidade em Navegadores

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support No No No1 No No No
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support No No No No1 No 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: CalvinNunes
Última atualização por: CalvinNunes,