DEV Community

Ronaldo Modesto
Ronaldo Modesto

Posted on

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

Top comments (0)