2016-03-30 43 views
-1

下面的代碼不起作用爲什麼?任務是將每個單詞的第一個字母變成大寫(Javascript)

function titleCase(str){ 
    var newStr = str.split(" "); //split string turn it into seperated words[] 
    var resutl; 

    for(vari=0; i < newStr.length; i++){ //iterate all words 
     var result = newStr[i].charAt(0).toUpperCase + 

     // find first letter and turn it into capital 
     newStr[i].subString(1).toLowerCase(); 
    } 
    return result.join(" "); 
} 
+1

vari = 0空格丟失,應該是var i = 0,也是正確的變量'result'的拼寫並在循環之外初始化一次 –

+0

有關調試的問題需要具體描述你看到的行爲以及你想要什麼相反,不僅僅是「此代碼不起作用」消息 –

回答

0

結果你的代碼是一個字符串,而不是一個數組。你不能加入一個字符串。

循環的每次迭代都要用新單詞替換變量結果。您需要初始化一個結果數組[]並將每個結果推送到數組上,然後在循環完成後加入數組。

0

爆炸對空間的字符串,並與下面的功能迭代它:

function ucfirst(str) { 
    str += ''; // make sure str is really a string 
    var f = str.charAt(0).toUpperCase(); 
    return f + str.substr(1); 
} 
+1

'str + ='';'做什麼? – martijnn2008

+0

俗氣的方式,以確保它被轉換爲一個字符串:) – Garytje

+0

感謝您的編輯建議! – Garytje

0

result需求是一個數組,你也有一些拼寫錯誤在你的代碼,例如缺少()

function titleCase(str) { 
 
    var newStr = str.split(" "); 
 
    var result = []; 
 
    for (var i = 0; i < newStr.length; i++) { 
 
     result.push(newStr[i].charAt(0).toUpperCase() + newStr[i].substring(1).toLowerCase()); 
 
    } 
 
    return result.join(' '); 
 
} 
 

 

 
var str = 'hELLO wORLD'; 
 

 
document.write(titleCase(str));

0

你可以試試這個:

function titleCase(str){ 
var newStr = str.split(" "); 

var result = []; 

for(var i=0; i < newStr.length; i++){ 
    result.push(newStr[i].charAt(0).toUpperCase() + 
    newStr[i].substring(1).toLowerCase()); 

} 

    return result.join(' '); 

} 

另一種方法:

function titleCase(str){ 
    var words = str.split(" "); 

return words.map(function(word){ 
    return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase(); 
    }).join(" "); 
} 
0

嘗試使用正則表達式

var data = "The mission is to turn each word's first letter into capital"; 
data = data.replace(/ (.)/g,function(w){return w.toUpperCase()}); 

缺點:這不會大寫第一個字符。

相關問題