2016-05-14 83 views
0

我目前正在爲Free Code Camp編寫一個算法。該算法要我將文本轉換爲拉丁文。但是,我遇到的問題與Pig Latin沒有關係,但是在我的代碼中有些問題。下面是我得到的錯誤:豬拉丁算法 - .push()不是函數

stringArray.push('a', 'y');

,這裏是我的代碼:

function translatePigLatin(str) { 
    var consonantCluster = []; 
    var vowels = ['a', 'e', 'i', 'o', 'u']; 
    var stringArray = str.split(''); 

    //If stringArray begins with a vowel, add 'way' to the end 
    if (vowels.indexOf(stringArray[0]) === 0) { 
     stringArray.push('w', 'a', 'y'); 
     stringArray = stringArray.join(''); 
     str = stringArray; 
     console.log(str); 
    } 

    //If stringArray begins with consonant (or cluster), move to end of the stringArray and add 'ay' 
    //Get all consonants up until first vowel 
    for (var i = 0; i < stringArray.length; i++) { 
     if (vowels.indexOf(stringArray[i]) == -1) { 
      consonantCluster.push(stringArray[i]); 
      stringArray.push(stringArray[i]); 
     } else { 
      stringArray.push('a', 'y'); 
      stringArray.splice(0, consonantCluster.length); 
      stringArray = stringArray.join(''); 
      str = stringArray; 
      break; 
     } 
    } 

    console.log(str); 
    return str; 
} 

translatePigLatin("apple"); 

我的代碼返回預期的結果,但它仍然報告錯誤。任何人都可以幫忙嗎?在此先感謝:)

回答

0

看來你忘了在if聲明內返回。然後stringArray = stringArray.join('')使stringArray爲一個字符串,它沒有push

function translatePigLatin(str) { 
    var consonantCluster = []; 
    var vowels = ['a', 'e', 'i', 'o', 'u']; 
    var stringArray = str.split(''); 
    if (vowels.indexOf(stringArray[0]) === 0) { 
     stringArray.push('w', 'a', 'y'); 
     stringArray = stringArray.join(''); 
     return stringArray; // <-- exit function 
    } 
    for (var i = 0; i < stringArray.length; i++) { 
     if (vowels.indexOf(stringArray[i]) == -1) { 
      consonantCluster.push(stringArray[i]); 
      stringArray.push(stringArray[i]); 
     } else { 
      stringArray.push('a', 'y'); 
      stringArray.splice(0, consonantCluster.length); 
      stringArray = stringArray.join(''); 
      str = stringArray; 
      break; 
     } 
    } 
    return str; // <-- exit function 
} 
translatePigLatin("apple"); 
0

簡單地說,你是調用一些對象的方法push不具備的方法push,從而錯誤

.push()是不是一個函數

因爲你有很多代碼中有不同的分支,這可能不是一個完整的包含錯誤,但很可能,方法.joinstringArray上執行...因此stringArray不再是一個數組,而只是一個字符串。 String沒有稱爲push的方法。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join