JavaScript 函数类似于 Python range()

2022-08-30 04:25:10

JavaScript中是否有类似于Python的函数?range()

我认为应该有一种比每次都写以下行更好的方法:

array = new Array();
for (i = 0; i < specified_len; i++) {
    array[i] = i;
}

答案 1

对于 ES6 中非常简单的范围:

let range = n => Array.from(Array(n).keys())

bigOmega的评论中,可以使用Spread语法缩短:

let range = n => [...Array(n).keys()]

答案 2

,没有,但你可以做一个

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 以获取证明。

JavaScript和Python之间的比较range()

它的工作方式如下:

  • 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()