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.