0.2.1 • Published 7 years ago
lazyer v0.2.1
Lazyer
Lazy iteration in JavaScript.
Based heavily on the Rust iterator trait.
Overview
Lazyer allows for lazy iteration.
It can be used for working with finite sequences:
const lazy = require('lazyer');
lazy.from(people)
.filter(person => person.age >= 65)
.map(person => `${person.firstName} ${person.lastName}`)
.map(name => name.toUpperCase())
.forEach(name => console.log(name));And infinite sequences:
const lazy = require('lazyer');
lazy.range()
.scan(([a, b]) => [b, a + b], [0, 1])
.map(([a]) => a)
.take(10)
.collect();
→ [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]Works with anything iterable:
const lazy = require('lazyer');
const string = 'Hello World!';
const set = new Set(string);
lazy.range(0)
.zip(set)
.collectMap()
→ Map {
0 => 'H',
1 => 'e',
2 => 'l',
3 => 'o',
4 => ' ',
5 => 'W',
6 => 'r',
7 => 'd',
8 => '!'
}And does a bunch of useful things:
const lazy = require('lazyer');
const longest = lazy.from(listOfListOfNodes)
.flat()
.flatMap(node => node.children)
.max(node => node.data.length);Functions
Functions that create a lazy iterator.
fromofrangerepeatrepeatWithiterate
Adaptors
Methods that adapt the iterator.
A consumer needs to be called before any of these will be executed.
stepByskiptakeskipWhiletakeWhilechunkenumerateconcatcyclemapfilterscanzipflatflatMapjoinjoinWitheach
Consumers
Methods that consume the iterator.
These methods start the iteration.
nextpeekatcountlastforEachreducesumproductfindfindIndexincludeseverysomemaxminmaxByminBycollectpartitionunzipgroupcategorizeclonecloneMany
Docs
See the documented source code.
And for examples, see the test file.