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 depth
parâ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 Infinity
para 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
depth
argumento 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.