前面
作为一名优雅并严谨的coder,怎么能允许自己写这种
const alphas = ["A", "B", "c",...]
代码呢!u1s1确实可以用,但是要一个字母一个字母的在键盘上扣?
下面将使用循环的方式获取26个英文字母大写/小写,效果如下图↓
一、String.prototype.charCodeAt();
charCodeAt()
方法返回 0
到 65535
之间的整数,表示给定索引处的 UTF-16 代码单元。
语法:
string.charCodeAt(index)
参数:index
一个大于等于 0 ,小于字符串长度的整数。如果不是一个数值,则默认为 0。
返回值:
指定 index 处字符的 UTF-16 代码单元值的一个数字;如果 index 超出范围,charCodeAt() 返回 NaN
Try it:
const str = "my name is tag";
const index = 4;
console.log(str.charCodeAt(index)); //97 // 相当于"a".charCodeAt(0) 0代表第一个位置
我的评价是:返回字符串的 Unicode 编码(H 的 Unicode 值);
二、String.fromCharCode();
String.fromCharCode()
方法返回由指定的 UTF-16 代码单元序列创建的字符串。
语法:
String.fromCharCode(num)
参数:
num, ..., numN
一系列 UTF-16 代码单元的数字。范围介于 0 到 65535(0xFFFF)之间。
大于 0xFFFF 的数字将被截断。不进行有效性检查。
返回值:
一个长度为 N 的字符串,由 N 个指定的 UTF-16 代码单元组成。
描述:
该方法返回一个字符串,而不是一个 String 对象。
Try it:
//97 通过charCodeAt()获取的字符串"a"字符的 Unicode 编码;
console.log(String.fromCharCode(97)); //"a"
我的评价是:将 Unicode 编码转为一个字符;
三、通过上面两个方法实现A-Z数组;
- 取到
A
、Z
的Unicode编码; - 通过循环A-Z编码的差,得到之间的值;
- 循环时 把之间的值 转为字符 添加数组;
const alphas = [];
let start = 'A'.charCodeAt(0); //65
let last = 'Z'.charCodeAt(0); //90
for (start; start <= last; start++) {
alphas.push(String.fromCharCode(start));
};
console.log(alphas)
//["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"]
总结:在 0
到 65535
之间 取到A-Z
字符串的 Unicode 编码,然后循环将 Unicode 编码转为字符并添加到一个新数组;
最后
// 当我们知道这些个由来后可以更便捷的写出:
// 输出A-Z 26个大写字母
for (let i = 0; i < 26; i++) {
console.log(String.fromCharCode(65 + i));
};
// 输出a-z 26个小写字母
for (let i = 0; i < 26; i++) {
console.log(String.fromCharCode(97 + i));
};
愿心中始终有光,有事做、有人爱、有所期待。