函数式编程字典字符替换,键盘布局修复程序



假设我们要修复在AZERTY(或Dvorak或其他语言布局(键盘上编写的文本,就好像它是常规的QWERTY键盘一样。我们想替换相应字符上的某些字符。

所以我们有一本字典,看起来像这样:

const dic = {
q: a,
z: w,
}

但是字典很大,每个字符。我正在寻找一种方法来做到这一点,不使用for循环,利用最新javascript更改的优势,也许使用.replace((或.map((或任何您可以建议的内容。

你不需要一个大的字典,因为AZERTY上的很多键都在同一个地方: 只为不同的键制作一个映射,如果不存在映射,则返回输入:

const dict = {
q: "a",
w: "z"
// e, r, t, y are in the same place, for example...
};
console.log(
"qwerty".split("") // Explode the string to an array
.map(letter => dict[letter] || letter) // Map inputs
.join("") // output a string
);
// Generate a reverse mapping
const reverse_dict = {};
Object.keys(dict).forEach(key => reverse_dict[dict[key]] = key);
console.log(
"azerty".split("")
.map(letter => reverse_dict[letter] || letter)
.join("")
);

请注意,使用箭头函数:

  1. 如果只有一个参数,则不需要在参数列表两边加上括号。
  2. 如果省略函数体周围的{},也可以省略return关键字,主体将返回最后一个(唯一(表达式的值(除了 void 参数,它是一组空括号()您将在setTimeout等位置看到(。
  3. 关于const的一个常见误解是,数组或对象初始化后无法更新,但事实并非如此。你不能做的是将变量分配给其他东西(如const o = {}; o = ""(

最新更新