JavaScript函数类似于Python range()
JavaScript中是否有类似于Python的函数range()
?
我认为应该有比每次编写以下几行更好的方法:
array = new Array();
for (i = 0; i < specified_len; i++) {
array[i] = i;
}
-
不 ,没有,但 您可以制造一个 。
JavaScript的Python实现
range()
尝试 模拟它在Python中的工作方式 ,我将创建类似于以下的函数:
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; };
请参阅此jsfiddle以获取证明。
range()
JavaScript和Python之间的比较它的工作方式如下:
range(4)
返回[0, 1, 2, 3]
,range(3,6)
返回[3, 4, 5]
,range(0,10,2)
返回[0, 2, 4, 6, 8]
,range(10,0,-1)
返回[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
,range(8,2,-2)
返回[8, 6, 4]
,range(8,2)
返回[]
,range(8,2,2)
返回[]
,range(1,5,-1)
返回[]
,range(1,5,-2)
返回[]
,
及其Python对应物的 工作方式完全相同 (至少在上述情况下):
>>> range(4) [0, 1, 2, 3] >>> range(3,6) [3, 4, 5] >>> range(0,10,2) [0, 2, 4, 6, 8] >>> range(10,0,-1) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] >>> range(8,2,-2) [8, 6, 4] >>> range(8,2) [] >>> range(8,2,2) [] >>> range(1,5,-1) [] >>> range(1,5,-2) []
因此,如果您需要一个功能类似于Python的功能
range()
,则可以使用上述解决方案。