2016-06-13 2 views
0

나는 자바로 프로그래밍 할 수있는 능력을 개발하고있다. 내가 가진 우려 중 하나는 코드가 작동하지만 효율적인지 여부를 모른다는 것입니다. 문제를 올바르게 해결하기보다는 문제 해결을 계속하고있는 것 같습니다. 예를 들어 :자바 스크립트의 효율성

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");

내가 일을 할 수있는 더 좋은 방법이 있어야한다 같은 느낌. 누구든지 1) 어떤 일을하는보다 효율적인 방법을 배우는 법 2)이 코드를 어떻게 정리할 것입니까?

감사합니다 당신이 문제없이 통지 할 때까지이 프로그램의 속도 용어의 효율성에 대해 걱정하지 않을

+4

체크 아웃 [. 코드 검토] (HTTP : //codereview.stackexchange.com/) –

+4

Question가 [CodeReview] (http://codereview.stackexchange.com/)에 더 적합하기 때문에 투표를 닫으십시오 – trincot

+0

'letters = words [i] .split ('');''단어 [i] = 단어 ''로 간단하게'words [i] [0] = word s [i] [0]. toUpperCase();'. 문자에 액세스하기 위해 문자열을 분할 할 필요가 없습니다. 'words.toString(). replace (/,/g, ");'대신 words = words.join (" ")'을 사용하십시오. – Xufox

답변

3

무리.

깨끗한 코드와 가독성의 측면에서

, higher-order 함수는 루프에 비해 일반적으로 더 나은 :

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

심지어 빨리 ES6에 :

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

더 "공식적인"것을 만들기 위해서는'[0]'대신'.charAt (0)'을 사용하십시오. –