JavaScript版range函数生成number数组

515 阅读1分钟

用惯了Python,写js时,没有range函数,很不方便,于是动手写了一个:

function range(start, end) {
    if (end === undefined) {
        end = start
        start = 0
    } else if (end <= start) {
        return []
    }
    return Array(end-start).fill(0).map((el, index) => start + index)
}

这样用:

console.log(range(5))
// [0, 1, 2, 3, 4]
console.log(range(3, 5))
// [3, 4]

然后,TypeScript版长这样:

// Python风格的range函数:range(3) == [0, 1, 2]; range(1, 4) == [1, 2, 3]
function range(start, number, end?: number): number[] {
    if (end === undefined) {
        end = start
        start = 0
    } else if (end <= start) {
        return []
    }
    return Array(end-start).fill(0).map((v, i) => start + i)
}