我在互联网上找到了这段代码
var b = '12-0-17-2-4-11-14';
var xxx = b.split('-').map(function (x) {
var x = Number(x);
return String.fromCharCode(x < 26 ? 97 + x : 39 + x);
}).join('');
console.log(xxx);
感:
0 = "a";
b = "1";
c = "2";
d = "3";
此代码的输出将是&#39; Marcelo&#39;,原因
12 = "M", 0 = "a", 17 = "r", 2 = "c", 4 = "e", 11 = "l", 14 = "o";
我理解直到将所有字符串转换为数字,但剩下的就是我不能捕捉
fromCharCode (x < 26 ? 97 + x : 39 + x)
正在做什么?这段代码负责将数字与字母表匹配。
有人可以解释一下吗?
答案 0 :(得分:2)
fromCharCode
中的少量计算用于将零索引字母(0:a,1:b,...25:z,26:A...
)映射到其正确的字符代码:
var output = '';
for(var i = 0; i < 52; i++){
output += String.fromCharCode(i < 26 ? 97 + i : 39 + i);
}
alert(output);
&#13;
如您所见:
密码65-90
为A-Z
,97-122
为a-z
。
因此,字母表的前半部分(x < 26
)已将97
添加到其索引中,而后半部分(x >= 26
)则{{1}已添加,即65-26
。
答案 1 :(得分:1)
(x < 26 ? 97 + x : 39 + x)
只是计算从数字中形成字母表。
如果x的值(即字符串中的每个数字)小于26,那么如果可以映射到字母表(字母表是26对吗?),则返回该字母表的字符代码,否则返回charcode为大写字母
答案 2 :(得分:0)