我尝试了一下谷歌搜索,但没有取得太大的成功。 我想做的是将字符串中的每个字母更改为其他字母。例如 “这是一个字符串” 会变成像 “&@ /-52-.'49-!”
到目前为止,我的字符串/短语为
let phrase = ['a', 'b', 'c'];
然后再
phrase = phrase.map(phrase => {
return phrase.replace('a', '-');
return phrase.replace('b', '!');
return phrase.replace('c', ',');
return phrase.replace('d', ';');
return phrase.replace('e', ',');
return phrase.replace('f', '(');
..一直到Z,然后
});
console.log(phrase);
当我运行它时,我得到这个输出
[ '-', 'b', 'c' ]
但是应该是这个
[ '-', '!', ',' ]
这意味着它只是“翻译”第一个字母并跳过其余字母,而我需要它来翻译整个字符串。
如果有人能指出正确的方向,我将非常感激:)
答案 0 :(得分:4)
我会改用replace: replaceWith
组织的对象:
const replacements = {
a: '-',
b: '!',
c: ',',
d: ';',
e: ',',
f: '('
};
const input = ['a', 'b', 'c'];
const output = input.map(inputPhrase => replacements[inputPhrase]);
console.log(output);
如果要替换的短语可以包含不能用作裸键的字符,请将其括在字符串中:
const replacements = {
a: '-',
b: '!',
c: ',',
d: ';',
e: ',',
f: '(',
'###': 'foo'
};
const input = ['a', 'b', 'c', '###'];
const output = input.map(inputPhrase => replacements[inputPhrase]);
console.log(output);
答案 1 :(得分:2)
return
从函数中退出-每次都重新分配phrase
:
let phrase = ['a', 'b', 'c'];
phrase = phrase.map(phrase => {
phrase = phrase.replace('a', '-');
phrase = phrase.replace('b', '!');
phrase = phrase.replace('c', ',');
phrase = phrase.replace('d', ';');
phrase = phrase.replace('e', ',');
return phrase.replace('f', '(');
});
console.log(phrase);
或使用一个对象(使用toLowerCase
以避免区分大小写-如果您想为a
和A
使用不同的字符,则将其删除):
let phrase = ['a', 'b', 'c'];
const replace = {
"a": "-",
"b": "!",
"c": ",",
"d": ";",
"e": ",",
"f": "("
};
phrase = phrase.map(phrase => replace[phrase.toLowerCase()]);
console.log(phrase);