Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including lazy-iterable with all npm packages installed. Try it out:

var lazyIterable = require("lazy-iterable")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

lazy-iterable v1.0.1

An iterable object that lazily implements many Array.prototype members.

LazyIterable

An iterable object that lazily implements many Array.prototype members.

function * generator () {
  yield 1
  yield 2
  yield 3
}

const lazy = new LazyIterable(generator)

const array = lazy.map(v => v * 2).toArray()

console.log(array) // [2, 4, 6]

The advantage that LazyIterable has over Array is that the its source is evaluated as late as possible.

let iterated = false

function * generator () {
  iterated = true
  yield 1
  yield 2
  yield 3
}

let lazy = new LazyIterable(generator)
console.log(iterated) // false

lazy = lazy.map(v => v * 2)
console.log(iterated) // false

const array = lazy.toArray()
console.log(iterated) // true

LazyIterable implements most of the read-only members of Array.prototype as well as a couple in-place members in a read-only fashion.

  • Lazy members
    • concat
    • entries
    • filter
    • keys
    • map
    • reverse
    • slice
    • sort
    • values
  • Eager members:
    • length
    • every
    • find
    • findIndex
    • forEach
    • includes
    • indexOf
    • itemAt
    • join
    • reduce
    • reduceRight
    • some
    • toArray

reverse and sort each return a new LazyIterable whereas Array performs the action in-place.

Read more in the API Documentation.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free