2016-11-12 55 views
0

我試圖做一個代碼來添加字符串「方式」的單詞,以元音開頭,或添加單詞「ay」和單詞的第一個字母在如果單詞以輔音開頭,則結束該字符串。我分解了單詞,看看是否以輔音或元音開頭,然後在第一個參數中加入「way」或「ay」,最後加入數組以顯示結果字符串。問題在於連接僅適用於以元音開頭的單詞。我怎樣才能解決這個問題?Join()方法只轉換字符串的一些數組

的代碼:

function isVowel(c) { 
    return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1; 
} 

function translatePigLatin(str) { 

    str=str.split(''); 
    var firstLetter=str[0]; 

    if(isVowel(firstLetter)) str.push("way"); 

    else {  

    str.splice(0,1); 
    str=str+firstLetter+"ay"; 

    } 

    str= Array.prototype.join.call(str,""); 
    alert(str); 

    return str; 
} 

translatePigLatin("consonant"); 
+0

所以要清楚,當你'consonant'傳,你能指望什麼回去? – adeneo

回答

1

你用操作者+添加到陣列這可能會使類型,鑄造陣列爲字符串。您應該在數組上使用push來獲得您所尋找的行爲。

function isVowel(c) { 
 
    return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1; 
 
} 
 

 
function translatePigLatin(str) { 
 

 
    str=str.split(''); 
 
    var firstLetter=str[0]; 
 

 
    if(isVowel(firstLetter)){ 
 
    
 
    str.push("way"); 
 

 
    }else {  
 

 
    str.splice(0,1); 
 
    str.push(firstLetter+"ay"); 
 

 
    } 
 

 
    str= Array.prototype.join.call(str,""); 
 
    alert(str); 
 

 
    return str; 
 
} 
 

 
translatePigLatin("consonant");

0

的問題是,你使用的陣列字符串連接,這樣結果是不是一件.join()會努力。相反,你需要.push()進入陣列,然後.join()整個事情。

function isVowel(c) { 
    return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1; 
} 

function translatePigLatin(str) { 

    str = str.split(''); 
    var firstLetter = str[0]; 

    if(isVowel(firstLetter)) { 
    str.push("way") 
    } else {  
    str.splice(0,1); 
    str.push('ay') 
    } 
    alert(str.join('')); 
    return str.join(''); 
} 

translatePigLatin("consonant"); 
0

你可以用樣本中所示的RegEx做類似的事情。

function Translate(inputWord) { 
 
    if (/^[aeiou]/i.test(inputWord)) { 
 
    return inputWord + "way"; 
 
    } else { 
 
    return inputWord + inputWord.charAt(0) + "ay"; 
 
    } 
 
} 
 

 
console.log(Translate("consonant")); 
 
console.log(Translate("apple"));

相關問題