JavaScript函数类似于Python range()

发布于 2021-01-29 18:42:23

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

我认为应该有比每次编写以下几行更好的方法:

array = new Array();
for (i = 0; i < specified_len; i++) {
    array[i] = i;
}
关注者
0
被浏览
333
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    ,没有,但 您可以制造一个

    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(),则可以使用上述解决方案。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看