jslinq
Another LINQ provider for Javascript
Install NPM
npm install jslinq --save
Install Bower
bower install zenprogrammingjslinq --save
Usage
Given the following source array:
var data = id: 1 name: "one" category: 'fruits' countries: "Italy" "Austria" id: 2 name: "two" category: 'vegetables' countries: "Italy" "Germany" id: 3 name: "three" category: 'vegetables' countries: "Germany" id: 4 name: "four" category: 'fruits' countries: "Japan" id: 5 name: "five" category: 'fruits' countries: "Japan" "Italy" ;
Get jslinq queryable object
var queryObj = ;
Get count of elements
var result = queryObj ; /*result => 5*/
Get all elements with toList
var result = queryObj ; /*result => [ { id: 1, name: "one", ... }, { id: 2, name: "two", ... }, { id: 3, name: "three", ... }, { id: 4, name: "four", ... }, { id: 5, name: "five", ... }];*/
Get single element (or null) on list with singleOrDefault
var result = queryObj ; /*result => { id: 1, name: "one", ... };*/
Projection on one or more properties with select
var result = queryObj ; /*result => [1, 2, 3, 4, 5];*/
Filter elements with where
var result = queryObj ; /*result => [{ id: 2, name: "two", ... }];*/
Make a groupBy and count on each group
var result = queryObj ; /*result => [ { key: 'vegetables', count: 2, elements: [...] }, { key: 'fruits', count: 3, elements: [...] }, ];*/
Merge two arrays with join
var otherData = id: 7 name: "seven" category: 'vegetables' id: 8 name: "eight" category: 'fruit' ; var result = queryObj ;/*result => [ { id: 1, name: "one", ... }, { id: 2, name: "two", ... }, { id: 3, name: "three", ... }, { id: 4, name: "four", ... }, { id: 5, name: "five", ... }, { id: 7, name: "seven", ... }, { id: 8, name: "eight", ... }];*/
Get distinct elements without repetitions
var extraData = "A" "B" "C" "B" "A" "D"; var result = ;/*result => ["A", "B", "C", "D"];*/
Sort ascending using orderBy
var result = queryObj ;/*result => [ { id: 5, name: "five", ... }, { id: 4, name: "four", ... }, { id: 1, name: "one", ... }, { id: 3, name: "three", ... }, { id: 2, name: "two", ... }];*/
Sort descending using orderByDescending
var result = queryObj ;/*result => [ { id: 2, name: "two", ... }, { id: 3, name: "three", ... }, { id: 1, name: "one", ... }, { id: 4, name: "four", ... }, { id: 5, name: "five", ... }];*/
Select multiple elements with selectMany
var result = queryObj ;/*result => [ "Italy", "Austria", "Italy", "Germany", "Germany", "Japan", "Japan", "Italy"] }];
Get the first matching element with firstOrDefault
var result = queryObj ;/*result => { id: 2, name: "two", ... };*/
Get the last matching element with lastOrDefault
var result = queryObj ;/*result => { id: 3, name: "three", ... };*/
Check if at least one elements matchs expression with any
var result = queryObj ;/*result => true;*/
Check if all elements match expression with all
var result = queryObj all{ return elcountrieslength > 0; };/*result => true;*/
Skip the number of specified elements with skip
var result = queryObj ;/*result => [ { id: 4, name: "four", ... }, { id: 5, name: "five", ... }];*/
Take the number of specified elements with take
var result = queryObj ;/*result => [ { id: 1, name: "one", ... }, { id: 2, name: "two", ... }];*/
Get the maximum element using specific expression with max
var result = queryObj ;/*result => 5;*/
Get the minimum element using specific expression with min
var result = queryObj ;/*result => 1;*/
Get elements contained on two array with intersect
var otherData = id: 2 name: "two" category: 'vegetables' id: 8 name: "eight" category: 'fruit' ; var result = queryObj ;/*result => [ { id: 2, name: "two", ... }];*/
Remove one element using remove
var elementToRemove = queryObj ; var result = queryObj ;/*result => [ { id: 1, name: "one", ... }, { id: 3, name: "three", ... }, { id: 4, name: "four", ... }, { id: 5, name: "five", ... }];*/
Remove, from source array, specified elements with subtract
var elementsToSubtract = id: 2 name: "two" ... id: 4 name: "four" ... id: 7 name: "seven" ... ; var result = queryObj ;/*result => [ { id: 1, name: "one", ... }, { id: 3, name: "three", ... }, { id: 5, name: "five", ... }];*/
Sum numeric values with sum
var result = queryObj ;/*result => 15];*/
Calculate average on numeric values with average
var sampleData = value: 3 value: 2 value: 5 value: 2 ; var result = ; /*result => 3];*/
You can also chain multiple methods
var result = queryObj ;/*result => [1, 4, 5];*/
...and use jslinq nested inside functions
var result = queryObj ;/*result => [ { id: 1, name: "one", ... , countries: ["Italy", "Austria"] }, { id: 2, name: "two", ... , countries: ["Italy", "Germany"] }, { id: 5, name: "five", ... , countries: ["Japan", "Italy"] }];*/