Este post é uma dica para quem trabalha com a linguagem JavaScript. Muitas vezes a manipulação de arrays ou listas de dados pode ser um problema, principalmente quando as operações a serem realizadas na estrutura de dados são um pouco mais complexas do que inserir ou remover um item, por exemplo.

Que tal utilizar o conceito de um dos recursos mais robustos da plataforma .NET para tratar o problema de manipulação de arrays no JavaScript? Com o .NET Framework conseguimos resolver grande parte destes problemas utilizando um excelente recurso da plataforma chamado LINQ.

Para quem não conhece, LINQ (.NET Language Integrated Query ou Consulta Integrada à Linguagem) é um conjunto de recursos da plataforma .NET que unifica a forma de acessar e manipular diferentes fontes de informações, tais como objetos, banco de dados e documentos XML. Introduzido no .NET Framework 3.5, LINQ tem uma arquitetura que o divide basicamente em 5 partes: para objetos, conjunto de dados, SQL, entidades e XML. Para maiores informações, acesse a documentação disponibilizada pela Microsoft¹,

Fonte:http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/pt/fig01.gif

Fonte:http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/pt/fig01.gif

Agora que temos uma ideia básica do que é LINQ, como podemos utilizar os seus conceitos em um projeto desenvolvido na linguagem JavaScript?

Muito simples, para isso existe uma biblioteca chamada Linq.js que tem as mesmas funcionalidades encontradas no LINQ do .NET Framework.

Com mais de 90 métodos para utilização, o Linq.js abstrai toda a lógica no que se refere à manipulação de conjunto de dados. Isso possibilita a implementação de funcionalidades complexas com uma sintaxe de fácil compreensão.

Para utilizar o Linq.js no seu projeto, basta acessar o site do projeto² realizar o download da biblioteca e incluir no seu código fonte. Se você usa o Visual Studio é ainda mais fácil, basta entrar no gerenciador de pacotes Nuget, procurar por Linq.js e adicionar à biblioteca na projeto desejado.

Agora vamos sair da teoria e demonstrar na pratica, através de alguns exemplos, o quanto a biblioteca Linq.js pode facilitar o desenvolvimento do seu projeto, possibilitando ganhos de desempenho e produtividade. Para efeito de demonstração, considere a seguinte lista de dados:

var listaDeUsuarios = [

{ “usuario”: { “id”: 1, “salario”: 200 }},

{ “usuario”: { “id”: 2, “salario”: 130 }},

{ “usuario”: { “id”: 3, “salario”: 500 }},

{ “usuario”: { “id”: 4, “salario”: 40 }},

{ “usuario”: { “id”: 5, “salario”: 130 }}

]

Função Where: obter os usuários cujo salário seja menor que 200

var resultado = Enumerable.From(listaDeUsuarios)

.Where(function (x) { return x.usuario.salario < 200 })

Resultado:  [

{ “usuario”: { “id”: 2, “salario”: 130 }},

{ “usuario”: { “id”: 4, “salario”: 40 }},

{ “usuario”: { “id”: 5, “salario”: 130 }}

]

Função Sum: obter a soma dos salários de todos usuários

var resultado = Enumerable.From(listaDeUsuarios)

.Sum(function (x) { return x.usuario.salario})

Resultado: 1000

Função Any: verificar se existe algum usuário com o salário maior que 300

var resultado = Enumerable.From(listaDeUsuarios)

.Any(function (x) { return x.usuario.salario > 300})

Resultado: true

Função Average: obter a média salarial dos usuários

var resultado = Enumerable.From(listaDeUsuarios)

.Average(function (x) { return x.usuario.salario})

Resultado: 200

 

Caso tenha alguma dúvida, a documentação completa da biblioteca está disponível no site³ do projeto. Ou ainda, entre em contato com a gente!

Referências:
1 – https://msdn.microsoft.com/pt-br/library/bb397926(v=vs.120).aspx
2 – https://linqjs.codeplex.com/
3 – http://neue.cc/reference.htm
4 – http://www.linhadecodigo.com.br/artigo/1729/introducao-ao-linq.aspx
Por: Renzo Oliveira
Revisão: Jéssica Saliba