Is there a function in JavaScript similar to Python’s range()?
I think there should be a better way than to write the following lines every time:
array = new Array();
for (i = 0; i < specified_len; i++) {
array[i] = i;
}
Advertisement
Answer
No, there is none, but you can make one.
JavaScript’s implementation of Python’s range()
Trying to emulate how it works in Python, I would create function similar to this:
function range(start, stop, step) {
if (typeof stop == 'undefined') {
// one param defined
stop = start;
start = 0;
}
if (typeof step == 'undefined') {
step = 1;
}
if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) {
return [];
}
var result = [];
for (var i = start; step > 0 ? i < stop : i > stop; i += step) {
result.push(i);
}
return result;
};
See this jsfiddle for a proof.
Comparison between range() in JavaScript and Python
It works in the following way:
range(4)returns[0, 1, 2, 3],range(3,6)returns[3, 4, 5],range(0,10,2)returns[0, 2, 4, 6, 8],range(10,0,-1)returns[10, 9, 8, 7, 6, 5, 4, 3, 2, 1],range(8,2,-2)returns[8, 6, 4],range(8,2)returns[],range(8,2,2)returns[],range(1,5,-1)returns[],range(1,5,-2)returns[],
and its Python counterpart works exactly the same way (at least in the mentioned cases):
>>> range(4) [0, 1, 2, 3] >>> range(3,6) [3, 4, 5] >>> range(0,10,2) [0, 2, 4, 6, 8] >>> range(10,0,-1) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] >>> range(8,2,-2) [8, 6, 4] >>> range(8,2) [] >>> range(8,2,2) [] >>> range(1,5,-1) [] >>> range(1,5,-2) []
So if you need a function to work similarly to Python’s range(), you can use above mentioned solution.