在 ruby 中,我可以使用以下代码生成从 a 到 z 的字符串数组:
alphabet = ('a'..'z').to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
Javascript中有类似的函数调用吗?
最佳答案
不幸的是,ECMAScript 在其标准库中没有 Range
。但是,您可以做的是使用 Array.from
工厂函数使用映射函数构造Array
。
类似这样的事情:
const alphabet = Array.from({ length: 26 }, (_, i) => i + 97).map(String.fromCharCode);
或者,没有魔数(Magic Number):
const charCodeOfA = "a".charCodeAt(0), //=> 97
charCodeOfZ = "z".charCodeAt(0), //=> 122
lengthOfAlphabet = charCodeOfZ - charCodeOfA + 1, //=> 26
alphabet = Array.from({ length: lengthOfAlphabet }, (_, i) => i + charCodeOfA).
map(String.fromCharCode);
在 ECMAScript 的 future 版本中,最好使用 do
expressions避免这些临时辅助变量污染命名空间:
const alphabet = do {
const charCodeOfA = "a".charCodeAt(0), //=> 97
charCodeOfZ = "z".charCodeAt(0), //=> 122
lengthOfAlphabet = charCodeOfZ - charCodeOfA + 1; //=> 26
Array.from({ length: lengthOfAlphabet }, (_, i) => i + charCodeOfA).
map(String.fromCharCode)
}
关于javascript - 如何在Javascript中快速从字符串生成数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56284472/