#javascript
Вопрос:
Я пытаюсь преобразовать сообщение со шрифтом по умолчанию в шрифт «vaporwave», но когда оно находит букву, которая не определена, оно возвращается неопределенным, как я мог заставить его пропустить ту букву, которая не была определена, и оставить исходную?
font = {
"A": "A",
"B": "B",
"C": "C",
"D": "D",
"E": "E",
"F": "F",
[...]
}
const string = "hello world"
const vapour = string.split('').map(letter => {
return font[letter];
}).join('');
//return for example, "undefined EL L O [...]"
//i want: "h EL L O [...]"
Ответ №1:
Вы можете чередовать font[letter]
с оригинальной буквой:
const vapour = string.split('').map(letter => {
return font[letter] || letter;
}).join('');
Или я бы предпочел построить регулярное выражение из ключей объекта:
const pattern = new RegExp('[' Object.keys(font).join('') ']', 'g');
const vapour = string.replace(pattern, char => font[char]);
Ответ №2:
Используйте нулевой оператор коалесцирования (??) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
const vapour = string.split('').map(letter => {
return font[letter] ?? letter;
}).join('');
Ответ №3:
Почему бы просто не проверить, присутствует ли буква в словаре ?
font = {
"A": "A",
"B": "B",
"C": "C",
"D": "D",
"E": "E",
"F": "F",
}
const string = "ABCDEFG123"
const vapour = string.split('').map(letter => {
if (letter in font) {
return font[letter];
} else {
return letter
}
}).join('');
console.log(string, "-->", vapour);