假设我们要修复写在AZERTY(或Dvorak或其他语言布局)键盘上的文本,就像它是常规的QWERTY键盘一样。我们想要替换相应的字符。
所以我们有一本字典,看起来与此相似:
const dic = {
q: a,
z: w,
}
但是对于每个角色来说,字典都很大。我正在寻找一种不使用for循环的方法,使用最新的javascript更改的优点,可能使用.replace()或.map()或你可以建议的任何东西。
答案 0 :(得分:2)
由于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("")
);

请注意,使用箭头功能:
{}
,则还可以省略return
关键字,并且正文将返回最后一个(唯一)表达式的值(除了void参数,是一组空括号()
,您可以在setTimeout
)等地方看到它们。const
的一个常见误解是,您无法在数组或对象初始化后更新它,但事实并非如此。您可以做的是将变量分配给其他内容(例如const o = {}; o = ""
)