在JavaScript中实现类似于Python的range()函数

Python中的range()函数(文档)可以生成由一个范围内的整数有序排列所构成的数组,这在很多情况下是十分方便的。而JavaScript中并没有这样一个函数,除了每次手写for循环之外,我们还可以手动实现自己的range(),提高可读性的同时实现了代码的复用。在StackOverflow上的一篇帖子中,对这个问题给出了很好的回答。整理如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
}

下面测试这个函数,在JavaScript控制台中输入如下代码

1
2
3
range(1, 10).forEach(function(i) {
console.log(i);
});

应该会输出1,2,3,4,5,6,7,8,9这九个数字。

这个函数的行为几乎跟Python中的range()完全一样,是我见到的最完善的实现,大家可以将这段代码收藏起来备用。


版权声明

The Bloom of Youth by KUANG Qi is licensed under a Creative Commons BY-NC-ND 4.0 International License.
况琪创作并维护的锦瑟华年博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证

本文首发于The Bloom of Youth | 锦瑟华年博客( http://kuangqi.me ),版权所有,侵权必究。

本文永久链接:http://kuangqi.me/programming/range-function-in-javascript/