문제
첫 번째 글자가 자음일 경우 문자의 맨 뒤로 보낸다. 앞글자가 모음이 될 때까지 반복한 뒤에 "ay"를 붙인다.
첫 번째 글자가 모음일 경우 문자 맨 뒤에 "way"를 붙인다.
- 예시
translatePigLatin("glove") should return "oveglay".
내가 푼 답
function translatePigLatin(str) { if((/[aeiou]/).test(str[0])) { return str + "way"; } if(!(/[aeiou]/).test(str)) { return str + "ay"; } while(!(/[aeiou]/).test(str[0])) { var result = str.substring(1) + str[0]; str = result; } return result + "ay"; }
Intermediate Solution
function translatePigLatin(str) { function check(obj) { return ['a','i','u','e','o'].indexOf(str.charAt(obj)) == -1 ? check(obj + 1) : obj; } return str.substr(check(0)).concat((check(0) === 0 ? 'w' : str.substr(0, check(0))) + 'ay'); }
Advanced Solution
function translatePigLatin(str) { var strArr = []; var tmpChar; // check if the char is consonant using RegEx function isConsonant(char) { return !/[aeiou]/.test(char); } // return initial str + "way" if it starts with vowel // if not - convert str to array if (!isConsonant(str.charAt(0))) return str + "way"; else strArr = str.split(""); // push all consonats to the end of the array while (isConsonant(strArr[0])) { tmpChar = strArr.shift(); strArr.push(tmpChar); } // convert array to string and concatenate "ay" at the end return strArr.join("")+"ay"; }