Newb total aquí ... buscando algunos ejemplos de optimización de este convertidor pigLatin.
function pigLatin(str) { var vowels = ["A", "E", "I", "O", "U", "a", "e", "i", "o", "u"]; if (vowels.includes(str[0])) { str = str + "way"; return str; } for (i = 0; i < str.length; i++) { if (vowels.includes(str[i])) { var flopStr = str.substring(0, [i]) + "ay"; var newStr = str.substring([i]) + flopStr; return newStr; } } if (!vowels.includes(str) === true) { str = str + "ay"; return str; } }Estoy bastante feliz de poder al menos escribir algo que funcione. Hago; sin embargo, necesita orientación sobre otros métodos para realizar la misma tarea.
Esta es una solución sin bucles, trabajando con una expresión regular y el índice de la primera vocal.
function pigLatin(str) { let lC = str.toLowerCase() const vowels = ["a", "e", "i", "o", "u"]; let regex = /[aeiou]/ let fVI = lC.search(regex) // firstVowelIndex switch(fVI) { case 0: return lC+'way'; default: return lC.substring(fVI) + lC.substring(0,fVI) + 'ay' } } console.log(pigLatin('coding')) // 'odingcay' console.log(pigLatin('addict')) // addictway(una mejora que podría adoptar en su versión es convertir la cadena a minúsculas y eliminar las vocales mayúsculas de la matriz)