[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/flat [Back]  [Original]

Array.prototype.flat() - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

Array.prototype.flat()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since janeiro de 2020.

Experimental: Esta uma tecnologia experimental
Verifique a tabela de compatibilidade entre Navegadores cuidadosamente antes de usar essa funcionalidade em produo.

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

In this article

Experimente

const arr1 = [0, 1, 2, [3, 4]];

console.log(arr1.flat());
// expected output: Array [0, 1, 2, 3, 4]

const arr2 = [0, 1, [2, [3, [4, 5]]]];

console.log(arr2.flat());
// expected output: Array [0, 1, 2, Array [3, Array [4, 5]]]

console.log(arr2.flat(2));
// expected output: Array [0, 1, 2, 3, Array [4, 5]]

console.log(arr2.flat(Infinity));
// expected output: Array [0, 1, 2, 3, 4, 5]

Sintaxe

js
flat();
flat(depth);

Parmetros

depth Optional

O nvel de profundidade especifca o quo profundo um array aninhando deve ser achatado. O padro 1.

Retorno

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

Exemplos

Achatando arrays aninhados

js
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]

const arr4 = [1, 2, [3, 4, [5, 6, [7, 8]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8]

Achatando e buracos em array

o mtodo flat remove espaos vazios do array:

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

Alternativa

reduce e concat

js
var arr = [1, 2, [3, 4]];

// Achatar array de nvel nico
arr.flat();
//  equivalente 
arr.reduce((acc, val) => acc.concat(val), []);
// [1, 2, 3, 4]

// Ou com sintaxe de decomposio
const flattened = (arr) => [].concat(...arr);

reduce + concat + isArray + recursividade

js
var arr = [1, 2, [3, 4, [5, 6]]];

// Para achatamentos mais profundos, use recursividade com reduce e concat
function flatDeep(arr, d = 1) {
  return d > 0
    ? arr.reduce(
        (acc, val) =>
          acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val),
        [],
      )
    : arr.slice();
}

flatDeep(arr, Infinity);
// [1, 2, 3, 4, 5, 6]

Especificaes

Especificao Status Comentrios
Array.prototype.flat proposal Draft

Compatibilidade com navegadores

Veja Tambm


Web Proxy Viewer  |  New URL  |  Original Page