Matriz JavaScript plana()

Resumo : neste tutorial, você aprenderá como usar o flat()método JavaScript Array para nivelar um array.

Introdução ao flat()método JavaScript Array

ES2019 introduziu o Array.prototype.flat() método que cria um novo array com todos os elementos dos subarrays concatenados a ele recursivamente até uma profundidade especificada.

O seguinte mostra a sintaxe do flat()método:

let newArray = arrayObject.flat([depth])Linguagem de código:  JavaScript  ( javascript )

O depthparâmetro especifica a profundidade do método que nivela a estrutura da matriz. O padrão é 1.

O exemplo a seguir mostra como nivelar uma matriz de números:

const numbers = [1, 2, [3, 4, 5]];
const flatNumbers = numbers.flat();

console.log(flatNumbers);Linguagem de código:  JavaScript  ( javascript )

Saída:

[1, 2, 3, 4, 5]Linguagem de código:  JSON/JSON com comentários  ( json )

Neste exemplo, não passamos o argumento de profundidade para o flat()método, portanto a profundidade é 1 por padrão. O flat()método concatenou todos os elementos do array aninhado [3,4,5] aos elementos do novo array.

Observe que o flat()método cria um novo array e não altera o array original:

console.log(numbers);Linguagem de código:  JavaScript  ( javascript )

Saída:

[ 1, 2, [ 3, 4, 5 ] ]Linguagem de código:  JavaScript  ( javascript )

O exemplo a seguir nivela uma matriz com dois níveis de profundidade:

const numbers = [1, 2, [3, 4, 5, [6, 7]]];
const flatNumbers = numbers.flat(2);

console.log(flatNumbers);Linguagem de código:  JavaScript  ( javascript )

Saída:

[1, 2, 3, 4, 5, 6, 7]Linguagem de código:  JavaScript  ( javascript )

Quando você não conhece o nível de profundidade, você pode passar o Infinitypara o flat()método para concatenar recursivamente todos os elementos das submatrizes na nova matriz:

const numbers = [1, 2, [3, 4, 5, [6, 7, [8, 9]]]];
const flatNumbers = numbers.flat(Infinity);

console.log(flatNumbers);Linguagem de código:  JavaScript  ( javascript )

Se um array tiver slots vazios, você pode usar o flat()método para remover os buracos, assim:

const numbers = [1, 2, , 4, , 5];
const sequence = numbers.flat();

console.log(sequence);Linguagem de código:  JavaScript  ( javascript )

Saída:

[ 1, 2, 4, 5 ]Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use o Array.prototype.flat()método para nivelar um array com os arrays aninhados.
  • Use o depthargumento para especificar a profundidade em que as matrizes aninhadas devem ser niveladas. A profundidade é 1 por padrão.
  • Também flat()remove os buracos na matriz com slots vazios.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *