javascript-linqjs

Usa la sintaxis de LINQ en JavaScript es LINQ.js

Linq.js es una librería de JavaScript que permite gestionar colecciones de manera fácil y eficiente, imitando el estilo de programación de la popular biblioteca LINQ (Language Integrated Query) de .NET.

La biblioteca LINQ.js proporciona una API similar a la de LINQ en .NET, permitiéndonos realizar consultas complejas en colecciones de datos utilizando una sintaxis fluida y expresiva.

LINQ.js está escrita en JavaScript puro y no tiene dependencias externas, lo que la convierte en una opción ligera y accesible para agregar funcionalidad de consulta a nuestras aplicaciones JavaScript.

Instalación y configuración

Instalación en Node.js

Para instalar LINQ.js en un proyecto Node.js, podemos utilizar npm.

npm install linq

Luego, la importamos en nuestro código JavaScript utilizando la sintaxis de importación de ES modules:

import Enumerable from 'linq';

let result = Enumerable.range(1, 10).where(i => i % 3 == 0).select(i => i * 10);
console.log(result.toArray()); // [30, 60, 90]

Para que este código funcione, debemos asegurarnos de que nuestro proyecto esté configurado para usar ES modules. Esto se hace agregando "type": "module" en el archivo package.json.

Instalación en el navegador

Para usar LINQ.js en el navegador, podemos incluir la versión minimizada de la biblioteca directamente en nuestro HTML:

<script type="module" src="./linq.min.js"></script>
<script type="module">
    import Enumerable from './linq.min.js';
    Enumerable.from([1, 2, 3]).forEach(x => console.log(x));
</script>

También se puede cargar la biblioteca desde un CDN.

Cómo usar LINQ.js

Filtrar y transformar datos

En este ejemplo, filtramos una secuencia de números para obtener solo aquellos divisibles por 3 y luego los multiplicamos por 10:

import Enumerable from 'linq';

let result = Enumerable.range(1, 10)
    .where(i => i % 3 == 0)
    .select(i => i * 10);

console.log(result.toArray()); // [30, 60, 90]

Uso de funciones anónimas

Podemos usar funciones anónimas (también conocidas como funciones lambda) para definir nuestras consultas de manera concisa:

import Enumerable from 'linq';

let result = Enumerable.range(1, 10)
    .where(i => i % 3 == 0)
    .select(i => ({ value: i, index: i * 10 }));

console.log(result.toArray()); // [{ value: 3, index: 30 }, { value: 6, index: 60 }, { value: 9, index: 90 }]

Trabajar con objetos

LINQ.js también nos permite trabajar con objetos y realizar consultas complejas sobre ellos. Por ejemplo, podemos transformar un array de objetos para incluir el índice de cada elemento:

import Enumerable from 'linq';

let array = ['apple', 'banana', 'cherry'];
let result = Enumerable.from(array)
    .select((val, i) => ({ fruit: val, index: i }));

console.log(result.toArray()); // [{ fruit: 'apple', index: 0 }, { fruit: 'banana', index: 1 }, { fruit: 'cherry', index: 2 }]