iterable-linq-utility
v0.0.16
Published
An Iterable mutation utility inspired by .net Linq and Javascript Array interface
Downloads
7
Readme
A .NET Linq to Objects porting with javacript naming conventions (e.g.: Select
as been ranamed to map
) and some new features (e.g.: memoize and materialize).
Official documentation available here
Main Idea
As the previous description says, the idea is to create a kind-of-porting of .NET Linq to Objects with a naming convetions that is more javascript and functional programming oriented and not sql oriented [^1].
In other words the idea is:
to keep the LINQ Deferred Exceution and apply it to the JavaScript Iterator Protocol with a more standard way of naming well known high order functions like
map
,flatMap
,reduce
used by javascript and some functional programming libraries (e.g.: Ramdajs, SanctuaryJs, FantasyLand and lodash).to keep the Linq repeatable execution which allows to traverse the same chain multiple times without having to recreate it from scratch every time, in this way is possible to store the chain in a variable and then trigger it to get the max and min without recreating it:
const myChain = IterableLinq.from([1,2,3,4]).filter().map(); // chain creation const max = myChain.max(); const min = myChain.min(); // using the same chain twice
Since in javascript you cannot rely on extensions methods as in c# there is the need to create a wrapper over Iterable
to achive the same Deferred Exceution concept.
IterableLinq
.fromRange(start, end)
.filter(myFilterFunction)
.map(myMapFunction)
.collectToArray()
as Operations Chain or O~s~C.
The O~s~C supports two types of operations: