Skip to content

jordanbtucker/lazy-iterable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5ec8bf9 · Jun 23, 2019

History

9 Commits
Sep 26, 2018
Sep 27, 2018
Jun 23, 2019
Sep 26, 2018
Sep 26, 2018
Sep 27, 2018
Sep 26, 2018
Sep 26, 2018
Oct 24, 2018
Sep 26, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 26, 2018
Sep 26, 2018

Repository files navigation

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.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published