DEV Community

Ronaldo Modesto
Ronaldo Modesto

Posted on

2

Reduzindo objetos para acesso de um nível [Javascript,Object]

Fala povo bonito 😀
Hoje venho aqui apresentar para vocês um package que eu criei bem simples para reduzir ou transformar objetos complexos em objetos mais simples.
Bora conferir isso ? 😀

O problema

Constantemente em javascript nós temos que fazer o parse de arquivos json para objetos, ou ainda, recebemos dados de uma determinada fonte ( um body de uma requisição http por exemplo) e precisamos fazer o parse daquelas informações. O problema é que as vezes nós precisamos processar todo o objeto, mapeando-o para uma classe para então definir um modelo para aquela informação e na maioria das vezes esse é o caminho correto, porém existem situações em que fazer esse mapeamento, ou seja, definir um modelo para essa estrutura não é sequer possível devido a dinamicidade dos possíveis dados de entrada.
Então, se não consigo definir um modelo para esses dados, como saber se determinada propriedade existe nos dados recebidos ? Aí que vem o nosso package do dia, o object-reducer-js;

object-reducer-js

O package é bem simples, ele serve para reduzir um objeto para um objeto de nível único.

Normalmente um objeto em javascript tem vários níveis de acesso, por exemplo:

const object = {
  propriedade1: 1,
  innerObject:{
    propriedade2: 2
  }
}
Enter fullscreen mode Exit fullscreen mode

Ou seja, se eu quiser ler o valor do campo propriedade2 precisamos fazer

object.innerObject.propriedade2

o que neste caso é relativamente simples, porém imagine que essa estrutura varie conforme diferentes fontes ou pior, varie na mesma fonte.
Neste caso podemos aplicar o package obcject-reducer-js, ele vai reduzir, ou seja simplificar, o objeto alvo, trazendo todas as propriedades não nulas para o primeiro nível de acesso.
Por exemplo esse objeto que analisamos, após passá-lo pelo package ele ficaria assim:

const objectReduced = {
  propriedade1: 1,
  propriedade2: 2
}

Enter fullscreen mode Exit fullscreen mode

Ou seja, após simplificar o objeto, para saber se determinada propriedade existe basta você fazer

objectReduced .propriedade

, eliminando a necessidade de fazer o parse 😀

Exemplo prático

Como todo bom artigo de programação, na minha humilde opinião, precisa de um exemplo prático aqui vai um pequeno trecho de código que mostra o package em ação!


const objectReducer = require('object-reducer-js');

const complexObject = {
 originIp:'192.168.0.1',
  hostData:{
    subRede:'192.168.0.0',
    hostName: 'www.localhost.com.br',
    identityId:'74512dsw',
    hostDetails:{
      geoInformation:{
        long:'45.145',
        lat: '78.412'
      },
      isAuth: true
    }
  }
}

// Fazendo um acesso regular ao objeto 

console.log('Está autenticado ?',  complexObject.hostData.hostDetails.isAuth);

const reducedObject =  objectReducer.reduceObjectSync(complexObject);

// objeto reduzido vai ser dessa forma

/* {
  originIp:'192.168.0.1',
  subRede:'192.168.0.0',
  hostName: 'www.localhost.com.br',
  identityId:'74512dsw',
  long:'45.145',
  lat: '78.412',
  isAuth: true
 }
*/

// Fazendo acesso após reduzir o objeto

console.log('Está autenticado ?',  reducedObject.isAuth);
```


Dessa forma conseguimos reduzir  objeto para acesso a um level apenas, acessando todas as propriedades com muito mais comodidade.

# Download do package

Para baixar o package basta instalá-lo utilizando o npm:

`npm i object-reducer-js`

Dá uma olhada na página do package para checar todas as possibilidades de uso e mais detalhes 😀:
[https://www.npmjs.com/package/object-reducer-js](https://www.npmjs.com/package/object-reducer-js)


Bom é isso, essa foi a dica de hoje, espero que lhes seja útil em algum momento. Fiquem com Deus e até a próxima 😀






Enter fullscreen mode Exit fullscreen mode

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Cloudinary image

Video API: manage, encode, and optimize for any device, channel or network condition. Deliver branded video experiences in minutes and get deep engagement insights.

Learn more

👋 Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay