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?

Leave a Reply

Your email address will not be published. Required fields are marked *