A cool function that exists in Python is the range
function which actually creates a list of numbers within the specified range. Once again, since I love JavaScript, here a quick imitation of this function:
/**
* Creates a range of numbers in an array, starting at a specified number and
* ending before a different specified number.
* @param {number} start Indicates what number should be used as the first
* number in the returned array. If this is the only number argument
* supplied, this will be used as the edge and 0 will be used as the start.
* @param {number=} edge Indicates the first number that should not appear in
* the range of numbers. If this number preceeds the start in the range
* (taking into account the step), an empty array will be returned. If not
* specified and not inferred this defaults to 0.
* @param {number=} step Indicates the difference between one number and the
* subsequent number placed in the returned array. If not specified this
* defaults to 1.
* @return {!Array.<number>} Array of numbers in the specified range.
*/
function range(start, edge, step) {
// If only one number was passed in make it the edge and 0 the start.
if (arguments.length == 1) {
edge = start;
start = 0;
}
// Validate the edge and step numbers.
edge = edge || 0;
step = step || 1;
// Create the array of numbers, stopping befor the edge.
for (var ret = []; (edge - start) * step > 0; start += step) {
ret.push(start);
}
return ret;
}
Of course, this is probably not a complete imitation, but as you can see it gets the job done in most cases:
range(10)
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(65, 69)
// [65, 66, 67, 68]
range(10, -10.1, -5)
// [10, 5, 0, -5, -10]
range(10, 1)
// []
If you want to use the function code, knock yourself out. š
2 Comments
Will Vincent · November 2, 2017 at 4:42 PM
Great post! I was just having the same thought and found your post. Thanks for the implementation!
Drau · May 10, 2019 at 1:10 PM
What about Infinity value?