javascript:区分数组映射中的键
javascript: differentiate keys in array maps
我写了一个小脚本来将拉丁语音译成不同的脚本。一些字符用两个字母在拉丁文中音译。例如(见代码)g 和 j 变为 gj
(\u{1050B}
)。但是,当输入“gj”时脚本并没有输出gj
,而是分别输出g
和j
(\u{1050A}
和\u{1050E}
)。如何区分不同的键?
function transliterate(word){
var l = {
/*...*/'g':'\u{1050A}','gj':'\u{1050B}','h':'\u{1050C}','i':'\u{1050D}','j':'\u{1050E}'/*...*/
};
return word.split('').map(function (char) {
return l[char] || char;
}).join('');
}
先把有多个字符的键放在前面,然后用正则表达式匹配任意一个键,从第一个开始,而不是按''
分割。
function transliterate(word) {
const charCodes = {
gj: '\u{1050B}',
g: '\u{1050A}',
h: '\u{1050C}',
i: '\u{1050D}',
j: '\u{1050E}'
};
const pattern = new RegExp(
Object.keys(charCodes).join('|'),
'g'
);
return word.replace(pattern, match => charCodes[match]);
}
console.log(transliterate('gjj'));
我写了一个小脚本来将拉丁语音译成不同的脚本。一些字符用两个字母在拉丁文中音译。例如(见代码)g 和 j 变为 gj
(\u{1050B}
)。但是,当输入“gj”时脚本并没有输出gj
,而是分别输出g
和j
(\u{1050A}
和\u{1050E}
)。如何区分不同的键?
function transliterate(word){
var l = {
/*...*/'g':'\u{1050A}','gj':'\u{1050B}','h':'\u{1050C}','i':'\u{1050D}','j':'\u{1050E}'/*...*/
};
return word.split('').map(function (char) {
return l[char] || char;
}).join('');
}
先把有多个字符的键放在前面,然后用正则表达式匹配任意一个键,从第一个开始,而不是按''
分割。
function transliterate(word) {
const charCodes = {
gj: '\u{1050B}',
g: '\u{1050A}',
h: '\u{1050C}',
i: '\u{1050D}',
j: '\u{1050E}'
};
const pattern = new RegExp(
Object.keys(charCodes).join('|'),
'g'
);
return word.replace(pattern, match => charCodes[match]);
}
console.log(transliterate('gjj'));