2017-04-05 6 views
0

私はすべての最初の文字が大文字になり、それ以外はすべて小文字になるように、関数で句を渡そうとしています。ループのための機能が動作しないと私のforループは、関数内のpushを使っていないのはなぜですか?

function titleCase(str) { 
    var array = []; 

    for (var i = 0; i <= str.length; i++) { 
    str = str.split(' '); 
    str = str[i].toLowerCase(); 
    str = str.charAt(0).toUpperCase() + str.substr(1, str.length); 
    array = array.push(str); 

    return array.push(str); 
    } 
} 

titleCase("SenTencE TesT"); 

、すべてを小文字、その後、各単語の最初の文字を大文字にします:私は、次の機能を持っています。

+1

array.pushの結果を返します。数字は – m0meni

+2

です。あなたの戻り値はあなたのforループの内部にあるので、一度だけ実行されます。 –

+0

"return array.push(str);"最初の反復で関数の値を返しますが、2番目、3番目などは決して実行されません。 – Kadaj

答えて

2

[EDIT]

それを行うが、これをしようとする多くの方法...

function titleCase(string) { 
    var array = string.split(' '); 
    var newString = ''; 
    for (var i = 0; i <= array.length-1; i++) { 
     array[i] = array[i].toLowerCase(); 
     array[i] = array[i].charAt(0).toUpperCase() + array[i].substr(1, array[i].length); 
     newString += array[i] + ' '; 
    }; 
    return newString.trim(); 
}; 

console.log(titleCase("SenTencE TesT")); 
+0

次のエラーコードが表示されます。TypeError:未定義の 'toLowerCase'プロパティを読み取ることができません。 – arziankorpen

+0

答えに私の編集を見てください。 – Slime

+0

それはうまくいった。助けてくれてありがとう。 – arziankorpen

0

1)あなたの変数の配列に名前を付けないでください、それは、JavaScriptの予約語でありますたとえば、 "arr"を使用できます。

2)あなたのコードでは、文を単語の配列に分割していますが、最初の単語にtoLowerCaseを適用するだけです。

function capitalize(str) { 
    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); 
} 
console.log(capitalize("sentence TesT")); 

はそれが役に立てば幸い:

3)は、あなたが望む結果を達成するための非常にクリーンな方法があります。

+0

これは最初の文字に対してのみ機能します。たとえば、 'sentence TesT'を 'Sentence test'に変換しますが、私が探しているのは2番目の単語の最初の文字を大文字にする 'Sentence Test'です。 – arziankorpen

+0

私はWaxiがあなたの質問に答えたと思います:) –

関連する問題