如何在jQuery中生成一个字母数组?

fab*_*bbb 40 javascript jquery

在Ruby中,我可以做到('a'..'z').to_a并且得到['a', 'b', 'c', 'd', ... 'z'].

jQuery或Javascript提供类似的构造吗?

Mic*_*rst 102

我个人认为最好的是:

alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
Run Code Online (Sandbox Code Playgroud)

简洁,有效,清晰,简单!

编辑: 我已经决定,因为我的答案得到了相当多的关注,添加了选择特定字母范围的功能.

function to_a(c1 = 'a', c2 = 'z') {
    a = 'abcdefghijklmnopqrstuvwxyz'.split('');
    return (a.slice(a.indexOf(c1), a.indexOf(c2) + 1)); 
}
Run Code Online (Sandbox Code Playgroud)

  • 额外的一点:如果你真的很懒,你只需将手指拖过键盘上的每一行(qwertyuiop ......),然后使用[sort](https://developer.mozilla.org/en/docs/Web)/JavaScript/Reference/Global_Objects/Array/sort)方法将字母按顺序放回. (7认同)
  • 你怎么说`to_a('A','z')的预期输出;`是?或者`to_a('α','ω')`@ MichaelLonghurst?另外@sonlexqt如果你以相反的方式订购你的操作,你可以节省大量的CPU; ` 'abcdefghijklmnopqrstuvwxyz'.toUpperCase().分裂('')` (3认同)

Pau*_* S. 33

如果您需要它,您可以轻松地为您执行此功能

function genCharArray(charA, charZ) {
    var a = [], i = charA.charCodeAt(0), j = charZ.charCodeAt(0);
    for (; i <= j; ++i) {
        a.push(String.fromCharCode(i));
    }
    return a;
}
genCharArray('a', 'z'); // ["a", ..., "z"]
Run Code Online (Sandbox Code Playgroud)


men*_*ode 27

new Array( 26 ).fill( 1 ).map( ( _, i ) => String.fromCharCode( 65 + i ) );
Run Code Online (Sandbox Code Playgroud)

使用97而不是65来获取小写字母.

  • 可以使用 `'A'.charCodeAt(0)` 来删除一个幻数(以很小的性能代价) (4认同)

Hen*_*ash 22

简短的ES6版本:

const alphabet = [...'abcdefghijklmnopqrstuvwxyz']
Run Code Online (Sandbox Code Playgroud)


Bry*_*son 19

如果有人来这里寻找他们可以硬编码的东西,你可以去:

["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"]

  • 长度与非硬编码解决方案相同。 (3认同)
  • 哈哈,正是我想要的。 (2认同)

sam*_*war 9

如果您需要array对字母表进行硬编码,但需要减少打字次数。上述解决方案的替代解决方案。

var arr = "abcdefghijklmnopqrstuvwxyz".split("");
Run Code Online (Sandbox Code Playgroud)

将输出一个像这样的数组

/* ["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"] */
Run Code Online (Sandbox Code Playgroud)

  • 与[几年前的答案](/sf/answers/2222885311/)相同... (2认同)

She*_*ito 8

通过使用ES6传播运算符,您可以执行以下操作:

let alphabet = [...Array(26).keys()].map(i => String.fromCharCode(i + 97));
Run Code Online (Sandbox Code Playgroud)

  • 使用 65 而不是 97 来获取大写字母。 (2认同)

小智 8

很多这些答案要么使用字符数组,要么String.fromCharCode我提出了一种稍微不同的方法,它利用了 base36 中的字母:

[...Array(26)].map((e,i)=>(i+10).toString(36))
Run Code Online (Sandbox Code Playgroud)

这个的优点是纯粹的代码高尔夫,它使用的字符比其他的少。

  • @Timo 在 `toString(36)` 之后附加 `.toUpperCase()`... (3认同)

Kam*_*ski 6

魔法

[...8337503854730415241050377135811259267835n.toString(36)]
Run Code Online (Sandbox Code Playgroud)

// chrome & firefox
let a1 = [...8337503854730415241050377135811259267835n.toString(36)];

console.log(a1);


// version working on all browsers (without using BigInt)
let a2 = [...[37713647386641440,2196679683172530,53605115].map(x=>x.toString(36)).join``];  

console.log(a2);
Run Code Online (Sandbox Code Playgroud)

  • +1谢谢。卡米尔想更多地了解它是如何工作的,因为它确实如此。 (2认同)

rot*_*est 5

我在上面看到了一个我喜欢的答案,它是英文字母的硬编码列表,但它仅是小写字母,我也需要大写字母,因此我决定对它进行修改,以防其他人需要它:

const lowerAlph = ["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"];

const upperCaseAlp = ["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"];