lazyer

0.2.1 • Public • Published

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.

  • from
  • of
  • range
  • repeat
  • repeatWith
  • iterate

Adaptors

Methods that adapt the iterator.
A consumer needs to be called before any of these will be executed.

  • stepBy
  • skip
  • take
  • skipWhile
  • takeWhile
  • chunk
  • enumerate
  • concat
  • cycle
  • map
  • filter
  • scan
  • zip
  • flat
  • flatMap
  • join
  • joinWith
  • each

Consumers

Methods that consume the iterator.
These methods start the iteration.

  • next
  • peek
  • at
  • count
  • last
  • forEach
  • reduce
  • sum
  • product
  • find
  • findIndex
  • includes
  • every
  • some
  • max
  • min
  • maxBy
  • minBy
  • collect
  • partition
  • unzip
  • group
  • categorize
  • clone
  • cloneMany

Docs

See the documented source code.
And for examples, see the test file.

Readme

Keywords

Package Sidebar

Install

npm i lazyer

Weekly Downloads

0

Version

0.2.1

License

MIT

Unpacked Size

57.3 kB

Total Files

9

Last publish

Collaborators

  • 1computer