Home

Awesome

Iterator.range

Champions: Jack Works

Author: Jack Works

Stage: 2

This proposal describes adding Iterator.range to JavaScript.

See the rendered spec at here.

Compare with other languages (Work in progress)

Playground

Polyfill

Motivation

Without these functions, the language feels incomplete, and is a paper cut to what could be a very polished experience. Bringing this into the platform will improve performance of the web, and developer productivity as they no longer have to implement these common functions.

—— String.prototype.{padStart,padEnd}

range is a very useful function. For example in Python:

for i in range(5):
    # ...

At least 20 different implementations in a single stackoverflow question.

Tons of libraries providing a range: math.js, lodash, underscore.js, ramda, d3, range, fill-range, multi-integer-range, ……

Goals

Non-goals

Examples

See tests to learn about more usages.

for (const i of Iterator.range(0n, 43n)) console.log(i) // 0n to 42n

Iterator.range(0, Infinity)
    .take(1000)
    .filter((x) => !(x % 3))
    .toArray()

function* even() {
    for (const i of Iterator.range(0, Infinity)) if (i % 2 === 0) yield i
}
;[...Iterator.range(1, 100, 2)] // odd number from 1 to 99

Presentations

Signature

See global.d.ts