Menu fechado

Flattening Arrays: Simplify Complex Data Structures

Flattening Arrays

📚 Introdução ao Flattening de Arrays

O conceito de flattening de arrays é fundamental em programação, especialmente em linguagens como JavaScript, onde é comum lidar com dados em formato de arrays aninhados. Arrays aninhados são arrays que contêm outros arrays como elementos, o que pode tornar a manipulação e processamento desses dados mais complexos.

Importância do Flattening de Arrays

O flattening de arrays é útil por várias razões. Ele simplifica a estrutura de dados, tornando-a mais fácil de processar e visualizar. Muitas bibliotecas de processamento de dados e visualização, como Chart.js e Plotly.js, requerem que os dados sejam em formato linear para funcionar corretamente. Além disso, muitas vezes os dados são recebidos em formato aninhado, seja por meio de APIs, leitura de arquivos ou bancos de dados, e precisam ser “achatados” para serem utilizados de forma eficaz.

const nestedArray = [1, [2, [3, 4], 5], 6];
const flattenedArray = nestedArray.flat(Infinity);
console.log(flattenedArray); // Saída: [1, 2, 3, 4, 5, 6]

🤔 O que são Arrays Aninhados

Arrays aninhados são arrays simples que contêm elementos ou outros arrays, que por sua vez podem conter elementos ou mais arrays. Essa estrutura de arrays é chamada de arrays aninhados e também é conhecida como arrays multidimensionais.

Estrutura de Arrays Aninhados

Um exemplo de array aninhado é [1, [2, 3], 4, [5, [6]], 7]. Nesse exemplo, o array aninhado contém 1, então o array [2,3], outro elemento 4, mais um array [5, [6]] e, finalmente, o elemento 7.

📈 Por que Flattening de Arrays é Útil

Simplificação de Processamento de Dados

O flattening de arrays é útil para simplificar o processamento de dados, especialmente quando se lida com conjuntos de dados complexos e hierárquicos. Muitas bibliotecas de processamento e visualização de dados requerem conjuntos de dados lineares para realizar operações de forma eficiente.

Integração de Dados

const dados = [1, [2, 3], 4, [5, [6]], 7];
const dadosFlat = dados.flat(Infinity);
console.log(dadosFlat); // Saída: [1, 2, 3, 4, 5, 6, 7]

📚 Conceito de Flattening de Arrays

Definição e Exemplo

Flattening de arrays é o processo de transformar arrays aninhados em arrays lineares, ou seja, remover a estrutura hierárquica dos arrays e criar um array unidimensional com todos os elementos.

Por exemplo, o array aninhado [1, [2, [3, 4]], 5] pode ser flattend para o array linear [1, 2, 3, 4, 5].

📊 Abordagens Diferentes para Flattening de Arrays

Método Nativo Array.prototype.flat()

JavaScript suporta um método nativo para flatten de arrays, chamado flat(). Por padrão, ele apenas flatten um nível de aninhamento. Você pode passar um argumento para especificar o nível de aninhamento que deseja flatten.




const deeplyNested = [1, [2, [3, 4], 5], 6];
const shallowFlat = deeplyNested.flat(); 
console.log(shallowFlat); 
const deepFlat = deeplyNested.flat(Infinity); 
console.log(deepFlat); 

Abordagem Recursiva

Uma abordagem recursiva pode ser implementada usando lógica personalizada. Nessa abordagem, uma função chama a si mesma para quebrar os arrays aninhados em um único array.

function flattenRecursively(arr) {
  let res = []
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      res = res.concat(flattenRecursively(arr[i]))
    } else {
      res.push(arr[i])
    }
  }
  return res
}

🔍 Método Nativo Array.prototype.flat()

Uso Básico do Array.prototype.flat()

O método Array.prototype.flat() é uma forma nativa de flattening de arrays em JavaScript. Por padrão, ele apenas flatteniza um nível de aninhamento. Você pode passar um argumento para especificar o nível de aninhamento que deseja flattenizar.

const deeplyNested = [1, [2, [3, 4], 5], 6];
const shallowFlat = deeplyNested.flat(); // 1 level flat
console.log(shallowFlat); // output: [1, 2, [3, 4], 5, 6]
const deepFlat = deeplyNested.flat(Infinity); // completely flat
console.log(deepFlat); // output: [1, 2, 3, 4, 5, 6]

Exemplos de Uso do Array.prototype.flat()

Aqui estão alguns exemplos de uso do método Array.prototype.flat():

const arr1 = [1, [2, 3], 4, [5, [6]], 7];
const flatArr1 = arr1.flat(Infinity);
console.log(flatArr1); // output: [1, 2, 3, 4, 5, 6, 7]

const arr2 = [1, [2, [3, 4], 5], 6];
const flatArr2 = arr2.flat(2);
console.log(flatArr2); // output: [1, 2, [3, 4], 5, 6]

🔄 Abordagem Recursiva

Implementação da Abordagem Recursiva

A abordagem recursiva para flattening de arrays é implementada utilizando uma função personalizada que chama a si mesma para quebrar os arrays aninhados em um único array.

function flattenRecursively(arr) {
  let res = []
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      res = res.concat(flattenRecursively(arr[i]))
    } else {
      res.push(arr[i])
    }
  }
  return res
}

Exemplo de Uso da Abordagem Recursiva

Para demonstrar a utilidade da abordagem recursiva, vamos considerar um exemplo de array aninhado e aplicar a função flattenRecursively para achatá-lo.

const nestedArray = [1, [2, [3, 4], 5], 6]
const flattenedArray = nestedArray.flat(Infinity)
console.log(flattenedArray) // Saída: [1, 2, 3, 4, 5, 6]

Fonte: dev.to.
Curadoria e Insights: Redação YTI&W (Developers).



Redação YTI&W-News

Redação Developers | Yassutaro TI & Web

Notícias do universo do Desenvolvimento Web, dicas e tutoriais para Webmasters.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Publicado em:Desenvolvimento Web,LiteSpeed,SEO,SEO Técnico
Fale Conosco
×

Inscreva-se em nossa Newsletter!


Receba nossos lançamentos e artigos em primera mão!