оставьте оригинальное письмо, если не можете найти его для замены

#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);