function range(start, end) { var numbers = []; if (!end) { end = start; start = 0; } for (var i = start; i < end; i++) { numbers.push(i); } return numbers; } console.log(range(5, 18)); //-> [ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ] console.log(range(10)); //-? [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
こんな感じ?
追記:2016-01-20
ES6 だとこんな感じ?
function range(start, end) { 'use start'; if (start >= end) { return []; } else if (!end) { end = start; start = 0; } return Array(end - start).fill().map((_, i) => start + i); } console.log(range(10, 10)); console.log(range(11, 10)); console.log(range(10)); console.log(range(1, 10)); //=> [] //=> [] //=> [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] //=> [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]