2016-05-14 1 views
0

私は現在フリーコードキャンプのアルゴリズムを書いています。このアルゴリズムでは、テキストをブタのラテン語に変換する必要があります。しかし、私が持っている問題は、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('')pushを持たない文字列をstringArrayにします。

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

関連する問題