JavaScript实现26位英文字母表(大写/小写)

2,067 阅读2分钟

前面

作为一名优雅并严谨的coder,怎么能允许自己写这种const alphas = ["A", "B", "c",...]代码呢!

u1s1确实可以用,但是要一个字母一个字母的在键盘上扣?

下面将使用循环的方式获取26个英文字母大写/小写,效果如下图↓

image.png

一、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数组;

  1. 取到AZ的Unicode编码;
  2. 通过循环A-Z编码的差,得到之间的值;
  3. 循环时 把之间的值 转为字符 添加数组;
    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"]

总结:在 065535 之间 取到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));
    };

愿心中始终有光,有事做、有人爱、有所期待。