"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Achatando um objeto profundamente aninhado: um guia passo a passo

Achatando um objeto profundamente aninhado: um guia passo a passo

Publicado em 01/11/2024
Navegar:393

Flattening a Deeply Nested Object: A Step-by-Step Guide

Compreendendo o problema
Freqüentemente, encontramos estruturas de dados complexas em aplicativos JavaScript. Essas estruturas podem ser objetos profundamente aninhados, tornando difícil manipulá-las ou processá-las diretamente. Uma operação comum é nivelar esses objetos, transformando-os em uma estrutura mais simples onde todas as propriedades estão no nível superior.

Neste blog, nos aprofundaremos em um trecho de código JavaScript que efetivamente nivela um objeto profundamente aninhado. Dividiremos o código linha por linha, explicando sua lógica e funcionalidade.

Detalhamento do código

let user = {
  name : 'Chiranjit',
  address : {
    personal : {
      city: 'Kolkata',
      state: 'West Bengal'
    },
    office : {
      city: 'Bengaluru',
      state: 'Karnataka',
      area: {
        landmark:'Waterside',
        post: 433101
      }
    }
  }
}
var finalObj = {} 

const flatObjFn = (obj, parent) => {
  for(let key in obj){
    if(typeof obj[key] === 'object'){
      flatObjFn(obj[key], parent '_' key)
    }else{
      finalObj[parent   '_'   key] = obj[key]
    }
  }
}

flatObjFn(user, 'user');
console.log(finalObj);

Explicação linha por linha

  1. Criando o objeto aninhado:
    • Começamos criando um objeto profundamente aninhado chamado user. Ele contém propriedades como nome, endereço e outros objetos aninhados dentro endereço.
  2. Inicializando o objeto de saída:

    • Um objeto vazio finalObj é criado para armazenar o resultado nivelado.
  3. Definindo a função de nivelamento:

    • Uma função chamada flatObjFn é definida, aceitando dois parâmetros: a) obj: O objeto a ser achatado. b) pai: uma string para prefixar nomes de propriedades para maior clareza.
  4. Iterando por meio de propriedades do objeto:

    • Um loop for...in itera sobre cada propriedade do objeto de entrada obj.
  5. Tratamento de objetos aninhados:

    • Se o valor de uma propriedade for um objeto, a função flatObjFn é chamado recursivamente nesse objeto. O parâmetro pai é concatenado com o nome da propriedade atual para criar um novo prefixo para as propriedades aninhadas.
  6. Tratamento de valores primitivos:

    • Se o valor de uma propriedade não for um objeto (ou seja, um valor primitivo como uma string ou número), é adicionado ao finalObj com uma chave formado pela concatenação do pai e do nome da propriedade atual.
  7. Chamando a função de nivelamento:

    • O flatObjFn é chamado com o objeto usuário como entrada e 'usuário' como o prefixo pai inicial.
  8. Registrando o objeto achatado:

    • O objeto achatado final é impresso no console usando console.log(finalObj).

Como funciona?
A função flatObjFn percorre recursivamente o objeto, dividindo estruturas aninhadas em um objeto plano. O parâmetro pai controla a hierarquia do objeto, permitindo que a função crie nomes de propriedades significativos no objeto de saída.

Vamos nos conectar no Twitter ou LinkedIn

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/dey24/flatting-a-deeply-nested-object-a-step-by-step-guide-163g?1 Se houver alguma infração, entre em contato com [email protected] para excluí-lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3