Skip to content

aaronpowell/linq-in-javascript

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

LINQ in JavaScript

I write a lot of C# and it has a really useful way to query large collections of data, called LINQ.

Although JavaScript arrays have querying capabilities through map, reduce, filter but the limitation is they process the entire array before going to the next step, meaning if you do a map then a filter the whole collection goes through map process before it starts filtering. This can be a problem with large data sets, it can take a while.

Why LINQ?

The advantage of LINQ is that it uses lazy execution, each item goes through the whole pipeline before the next item is processed. So if you have a large data set you can easily process subsets of the data and break early.

How does it work?

To do this it leverages the ES6 Iterators to yield each value.

Example

var items = [1, 2, 3, 4, 5, 6].asEnumerable();

for (let item in items.where(x => x % 2).select(x => x + 1))
    console.log(item);

//output will be 2, 4, 6

API

The following LINQ methods are implemented:

  • aggregate
  • all
  • any
  • asEnumerable
  • average
  • concat
  • contains
  • count
  • first, firstOrDefault
  • range
  • repeat
  • select, aliased to map
  • selectMany
  • single, singleOrDefault
  • toArray
  • where, aliased to filter

The full list of what LINQ in .NET does can be found here.

License

MIT

About

An implementation of LINQ in JavaScript use ES6 iterators for proper lazy evaluation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published