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
}
}
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
}
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 😀
Top comments (0)