javascript - JavaScript 是否有像 "range()"这样的方法在提供的范围内生成范围?

标签 javascript arrays functional-programming

在 PHP 中,您可以...

range(1, 3); // Array(1, 2, 3)
range("A", "C"); // Array("A", "B", "C")

也就是说,有一个函数可以让您通过传递上限和下限来获取一系列数字或字符。

是否有任何内置于 JavaScript 的 native 功能?如果没有,我将如何实现?

最佳答案

号码

[...Array(5).keys()];
 => [0, 1, 2, 3, 4]

字符迭代
String.fromCharCode(...[...Array('D'.charCodeAt(0) - 'A'.charCodeAt(0) + 1).keys()].map(i => i + 'A'.charCodeAt(0)));
 => "ABCD"

迭代
for (const x of Array(5).keys()) {
  console.log(x, String.fromCharCode('A'.charCodeAt(0) + x));
}
 => 0,"A" 1,"B" 2,"C" 3,"D" 4,"E"

作为函数
function range(size, startAt = 0) {
    return [...Array(size).keys()].map(i => i + startAt);
}

function characterRange(startChar, endChar) {
    return String.fromCharCode(...range(endChar.charCodeAt(0) -
            startChar.charCodeAt(0), startChar.charCodeAt(0)))
}

作为类型化函数
function range(size:number, startAt:number = 0):ReadonlyArray<number> {
    return [...Array(size).keys()].map(i => i + startAt);
}

function characterRange(startChar:string, endChar:string):ReadonlyArray<string> {
    return String.fromCharCode(...range(endChar.charCodeAt(0) -
            startChar.charCodeAt(0), startChar.charCodeAt(0)))
}

lodash.js _.range() 功能
_.range(10);
 => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
_.range(1, 11);
 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
_.range(0, 30, 5);
 => [0, 5, 10, 15, 20, 25]
_.range(0, -10, -1);
 => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
String.fromCharCode(..._.range('A'.charCodeAt(0), 'D'.charCodeAt(0) + 1));
 => "ABCD"

没有库的旧非 es6 浏览器:
Array.apply(null, Array(5)).map(function (_, i) {return i;});
 => [0, 1, 2, 3, 4]

console.log([...Array(5).keys()]);


(ES6 归功于 nils petersohn 和其他评论者)

关于javascript - JavaScript 是否有像 "range()"这样的方法在提供的范围内生成范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43384534/

相关文章:

javascript - greasemonkey 用户脚本中的 jQuery.getJSON

java - 我将如何缩放像素阵列?

c - fread 导致数组变得不可读

clojure - 懒惰没有按预期工作

haskell - Parsec 和 Applicative 风格

javascript - 为什么我的网页在应用 CSS 样式之前呈现原始 html - 既通过 Visual Studio Code 和 Firefox 在本地也托管在 github 上?

javascript - 替换所有出现的字符,除非它是字符串中的最后一个字符(javascript)

python - 在 Python、Ruby、Haskell(或其他语言)中迭代列表

关于使用扩展运算符包含 1...N 的数组的 Javascript 异常行为

javascript - 使用自定义排序函数在 JavaScript 中对多维数组进行排序