Skip to main content

xrange.js

Build Status

Javascript xrange / range function for node and browser.

xrange is based on the function of the same name from Python 2. It is a facility to iterate from start to finish by increment – even downward – without having to create a loop or array. Importantly, like the one in Python, xrange can be used completely as an iterator, with no array created.

Usage

Create with 1, 2, or 3 parameters

xrange(3).toArray();        // -> [ 0, 1, 2 ];
xrange(1, 4).toArray();     // -> [ 1, 2, 3 ];
xrange(1, 6, 2).toArray();  // -> [ 1, 3, 5 ];

Count downwards

Implied if second argument < first, but can also be set as 3rd parameter:

xrange(5, 2).toArray();     // -> [ 5, 4, 3 ];
xrange(5, 0, -2).toArray(); // -> [ 5, 3, 1 ];

Length

xrange(5).length; // 5
xrange(0, 5, 2);  // 3

Iterators

each/foreach

var sum = 0;
xrange(3).each(function(each) {
    sum += each;
});

// or `forEach`
xrange(3).forEach(function(each) {
    sum += each;
});

map

var plusOne = xrange(3).map(function(each) {
    return each + 1;
});

Recipes

Create an array of 5 5’s:

var array = xrange(5).map(function () {
    return 5;
});

Use async like a for loop:

async.each(
    xrange(1, 10),
    function(each, callback) {
        callback(null, each);
    }, function (err) {
        // finished ...
    }
);

Installation

Node

npm install xrange

Browser

bower install xrange