xrange
Python-esque iterator for number ranges
xrange is a function based on Python 3's range class (or Python 2's xrange class). Like the one in Python, xrange creates virtual arrays (see Iterators) which allows getting values lazily. This prevents over-the-top memory consumption when using large numbers, and opens the possibility to create never-ending, infinite lists.
Created with create-package-typescript
Examples
Simple iteration:
for (const number of xrange(5))
console.log(number); // 0, 1, 2, 3, 4Creation of arrays:
[ ...xrange(5) ];
// [ 0, 1, 2, 3, 4 ]Infinite and backward iteration:
xrange(0, Infinity);
// 0, 1, 2, 3, … (never ends)xrange(10, 0, -1);
// 10, 9, 8, 7, 6, 5, 4, 3, 2, 1Complex number sequences:
xrange(1, (next) => next < 100, ([ last, prelast = 0 ]) => last + prelast);
// 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89xrange(0, () => true, ([ last ]) => last ? 0 : 1);
// 0, 1, 0, 1, 0, 1, … (never ends)Iteration with methods (see #14):
xrange(17, 42, 5).forEach(number => {
console.log(number); // 17, 22, 27, 32, 37
});See more in /docs/examples
range vs xrange
Looking for less functionality in a smaller bundle? Check out
@xrange/coreand@xrange/func
The main difference of xrange from range is that xrange is an iterator, not an array constructor, — it yields numbers on demand, leaving array creation decision to user, which can always be done using the ... spread operator or Array.from.
While also having a larger bundle, xrange delegates the actual iteration to @xrange/core, which is vastly smaller, and can be used on its own (in some cases the usage is different though).
While @xrange/core provides numeric iterator, @xrange/func implements predicated iteration, provided as a separate smaller package. It also has less error correction, but the functionality is quite similar to xrange, since xrange uses @xrange/func under the hood.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
