Perezoso JS
This library expose a series of methods like any array methods but using enumerators
We have to forms of using it
One if using everything as functions or using and object Lazy
How to use it
import { Lazy } from 'perezoso-js'
var lazy = new Lazy(1,2,3,4,5)
lazy
.map(x => x * x)
.filter(x => x % 3 === 0)
.value()
var lazy2 = Lazy.from([1,2,3,4,5,6])
lazy2
.map(x => x * x)
.filter(x => x % 3 === 0)
.value()
or could be used in a functional way (but we don't have pipeline operator yet)
(https://github.com/tc39/proposal-pipeline-operator)[https://github.com/tc39/proposal-pipeline-operator]
import { value, filter, map, compose } from 'perezoso-js/functional'
compose(
map(x => x * x),
filter(x => x % 3 === 0),
value
)([1, 2, 3, 4, 5, 6])
You could create an Infinite iterator and use Lazy to do operations over
import { generate } from 'perezoso-js'
const Numbers = generate(function () {
let n = 0
return {
next: () => ({ done: false, value: n++ })
}
})
const Fibonacci = generate(function () {
let n1 = 0
let n2 = 1
let value
return {
next: () => {
[value, n1, n2] = [n1, n2, n1 + n2]
return { value }
}
}
})
const rangeFactory = (from, to = Infinity, step = 1) => {
return generate(function () {
let done = false
let value = 0
return {
next () {
value = from
done = from >= to
from = !done ? from + step : value
return { done: done, value: value }
}
}
})
}
rangeFactory(1, 100)
.map(x => x * 2)
.filter(x => x % 4 === 0)
.take(10)
.value()
Numbers
.map(x => x * 2)
.filter(x => x % 4 === 0)
.take(10)
.value()
Fibonacci
.map(x => x * 2)
.filter(x => x % 4 === 0)
.take(10)
.value()