2016-06-13 4 views
0

私はJavascriptでプログラムする能力に取り組んでいます。私の懸念事項の1つは、コードが機能することですが、効率的かどうかはわかりません。問題を適切に解決するのではなく、問題を回避し続けるかのように感じます。たとえば:Javascriptの効率

function titleCase(str) { 
 
    var words = str.split(' '); 
 
    for(var i = 0; i<words.length;i++){ 
 
    words[i] = words[i].toLowerCase(); 
 
    letters = words[i].split(''); 
 
    letters[0] = letters[0].toUpperCase(); 
 
    word = letters.join(''); 
 
    words[i] = word; 
 
    } 
 
    str = words.toString().replace(/,/g," "); 
 
    console.log(str); 
 
    return str; 
 
} 
 

 
titleCase("I'm a little tea pot");

私は物事を行うには良い方法がなければならないような気がします。誰にも何か提案がありますか?もっと効率的なやり方を学ぶ方法2)このコードをどうやってきれいにしますか?あなたはそれが問題であることに気づくまで

おかげでたくさん

+4

[コードレビューを。]チェックアウト(HTTP ://codereview.stackexchange.com/) –

+4

質問は[CodeReview](http://codereview.stackexchange.com/)にもっと適しているので閉じてください – trincot

+0

'letters = words [i] .splitのコードあなたは単純に 'words [i] [0] = wordと書くことができましたs [i] [0] .toUpperCase(); '。その文字にアクセスするために文字列を分割する必要はありません。 'words.toString()。replace(/、/ g、"); 'words = words.join(" ")'の代わりに 'words.toString – Xufox

答えて

3

私はあなたのプログラムの速度の項に効率を心配しないでしょう。クリーンなコードと読みやすさの面では

、高階関数は、一般的に、ループのためのより優れている:

ES6で
function titleCase (string) { 
    return string.split(' ').map(function(word) { 
    return word[0].toUpperCase() + word.slice(1) 
    }).join(' '); 
} 

あるいは迅速:

const titleCase = (str) => 
    str.split(' ') 
    .map(word => word[0].toUpperCase() + word.slice(1)) 
    .join(' ') 
+1

さらに「公式」にするには、 '[0]'の代わりに '.charAt(0)'を使います。 –