Estoy tratando de transformar un mensaje con la fuente predeterminada a la fuente "vaporwave", pero cuando encuentra una letra que no está definida, devuelve indefinida, ¿cómo podría hacer que salte esa letra que no estaba definida y dejar el ¿el original?
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 [...]"Puede alternar la font[letter] con la letra original:
const vapour = string.split('').map(letter => { return font[letter] || letter; }).join('');O, lo que preferiría sería construir una expresión regular a partir de las claves del objeto:
const pattern = new RegExp('[' + Object.keys(font).join('') + ']', 'g'); const vapour = string.replace(pattern, char => font[char]);Utilice el operador coalescente nulo (??) 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('');¿Por qué no comprobar simplemente si la letra está presente en el diccionario?
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);