var bot, end, range1, range2, range3, start, top; bot = 3; top = 0; // With right limit range1 = (function() { var results = []; for (var i = bot; bot <= top ? i <= top : i >= top; bot <= top ? i++ : i--){ results.push(i); } return results; }).apply(this); // Without right limit range2 = (function() { var results = []; for (var i = bot; bot <= top ? i < top : i > top; bot <= top ? i++ : i--){ results.push(i); } return results; }).apply(this); console.log(range1, range2); // Referencing ranges start = 5; end = 10; range3 = (function() { var results = []; for (var i = start; start <= end ? i <= end : i >= end; start <= end ? i++ : i--){ results.push(i); } return results; }).apply(this); console.log(range3.slice(1, 4)); console.log(range3.slice(1, +range3.length + 1 || 9e9)); // Negative indexes console.log(range3.slice(1, -1)); //# sourceMappingURL=4-2-ranges.js.map