Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中生成字母表数组?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在jQuery中生成字母表数组?

Javascript 如何在jQuery中生成字母表数组?,javascript,jquery,Javascript,Jquery,在Ruby中,我可以做('a'..'z')。到a和得到['a','b','c','d','z'] jQuery或Javascript提供类似的构造吗?没有Javascript或jQuery提供类似的构造。您必须创建自己的数组 您可以这样尝试: var alpha = ["a","b","c",....]; var index = 97; $("#parent .number").each(function(i) { $(this).html(String.fromCharCode(in

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


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

没有Javascript或jQuery提供类似的构造。您必须创建自己的数组

您可以这样尝试:

var alpha = ["a","b","c",....];
var index = 97;
$("#parent .number").each(function(i) {
    $(this).html(String.fromCharCode(index++));
});
或者最好这样做:

var alpha = ["a","b","c",....];
var index = 97;
$("#parent .number").each(function(i) {
    $(this).html(String.fromCharCode(index++));
});

如果您非常需要,您可以轻松地为自己制作一个函数

函数genCharArray(charA,charZ){
变量a=[],i=charA.charCodeAt(0),j=charZ.charCodeAt(0);

就个人而言,我认为最好的是:

alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
简洁、有效、易读、简单

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

函数到_a(c1='a',c2='z'){ a='abcdefghijklmnopqrstuvxyz'。拆分(''; 返回(a.slice(a.indexOf(c1),a.indexOf(c2)+1)); } console.log(到a('b','h');

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

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


[“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”]
通过使用ES6扩展运算符,您可以执行以下操作:

let alphabet = [...Array(26).keys()].map(i => String.fromCharCode(i + 97));

使用JavaScript的Array.from语法,您可以创建一个数组,并对每个数组元素执行映射功能。创建一个长度为26的新数组,并在每个元素上设置一个值,该值等于从当前元素索引的字符代码中获得的字符串加上ascii幻数

const alphabet = Array.from(Array(26), (e, i) => String.fromCharCode(i + 97));
同样,对于大写字母表,97可以与65互换

也可以使用对象的键方法(而不是使用映射的索引)使用值初始化数组

const alphabet = Array.from(Array(26).keys(), i => String.fromCharCode(i + 97));

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

常数下限=[“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”];


常量大写字母alp=[“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”];
这些答案中的许多都使用字符数组或
字符串。从charcode
,我提出了一种稍微不同的方法,利用base36中的字母:

[...Array(26)].map((e,i)=>(i+10).toString(36))

这种方法的优点是纯粹的编码高尔夫,它使用的字符比其他方法少。

如果您需要字母表的硬编码数组,但需要较少的键入。这是上述方法的替代解决方案

var arr = "abcdefghijklmnopqrstuvwxyz".split("");
将输出这样的数组

/* ["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"] */
简短的ES6版本:

const alphabet=[…'abcdefghijklmnopqrstuvxyz'];
console.log(字母表);
我相信上面的代码更地道。足够短,可以成为内联代码。 您不必记住起始字母的字符码,只需控制长度和起始字母即可检索字母表的子集,例如

Array.from({ length: 3 }, (_, i) => String.fromCharCode('x'.charCodeAt(0) + i)) // ['x', 'y', 'z]
试一试

let alphabet=[…数组(26)].map((x,i)=>String.fromCharCode(i+97));
console.log(字母表);
生成一行字符列表
const charList=(a,z,d=1)=>(a=a.charCodeAt(),z=z.charCodeAt(),[…数组(Math.floor((z-a)/d)+1)].map(((uu,i)=>String.fromCharCode(a+i*d));
log(“从A到G”,charList('A','G'));
log(“从A到Z,步长/增量为2”,字符列表('A','Z',2));
log(“从Z到P的顺序相反”,charList('Z','P',-1));
log(“从0到5”,字符列表('0','5','1));
log(“从9到5”,字符列表('9','5',-1));
log(“从0到8,步骤2”,字符列表('0','8',2));
log(“从α到ω”,charList('α','ω');
log(“来自的印地语字符क 到ह", charList('क', 'ह'));

console.log(“从А到Я的俄语字符”、字符表('А','Я'));
只是为了好玩,然后您可以在阵列原型上定义一个getter:

Object.defineProperty(Array.prototype, 'to_a', {
  get: function () {
    const start = this[0].charCodeAt(0);
    const end = this[1].charCodeAt(0);
    return Array.from(Array(end - start + 1).keys()).map(n => String.fromCharCode(start + n));
  }
});
这使得我们有可能采取以下行动:

['a', 'z'].to_a; // [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", ..., "z" ]
魔术
[…8337503854730415241050377135811259267835n.toString(36)]
//chrome和firefox
设a1=[…8337503854730415241050377135811259267835n.toString(36)];
控制台日志(a1);
//在所有浏览器上工作的版本(不使用BigInt)
设a2=[…[37713647386641440219667968317253053605115].map(x=>x.toString(36)).join``;

console.log(a2);
添加到@Sherwin Ablaña Dapito解决方案中(我想在答案中提供一些提示)

  • 65是大写字母的开始,26是字母表中的字符数
  • fill()方法将数组中的所有元素就地更改为静态值(1)
  • map()应用于每个元素,创建一个新数组,并将func作为arg
  • =>箭头函数表达式,可以写成
    函数(i){return i+65;}
  • 映射中的忽略参数(占位符值,此处无值)并使用second=index
  • String.fromcharcode
    是自解释的

新数组(26).fill(1).map(u,i)=>String.fromCharCode(65+i));

这里是一个快速的一行程序

没有依赖关系

Array.from(Array(26)).map((e, i) => i + 65).map((x) => String.fromCharCode(x));

console.log(Array.from(Array(26)).map((e,i)=>i+65.map((x)=>String.fromCharCode(x)))
不,你需要创建自己的。我真的认为他可能想要比手动键入整个字母表更自动化的东西。从这个问题看来,他已经知道如何创建数组了。@cookiemonster:-用演示更新了我的答案!希望对OP有帮助!与任务更直接相关的东西可以使用
$.map()
创建
Array.from(Array(26)).map((e, i) => i + 65).map((x) => String.fromCharCode(x));