簡體   English   中英

為什么在函數內部使用push的for循環不起作用?

[英]Why is my for loop using push inside a function not working?

我正在嘗試通過一個函數傳遞一個短語,以便每個首字母都大寫,其他所有字母都小寫。 我有以下功能:

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

如果沒有for循環,該函數將起作用,並將所有內容變為小寫,然后將每個單詞的首字母大寫。

[編輯]

有很多方法可以做到,但是嘗試一下...

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

1)不要命名您的變量數組,即JavaScript保留字,您可以使用“ arr”。

2)在您的代碼中,您將句子拆分為單詞數組,但是您僅將toLowerCase應用於第一個單詞。

3)有一種更清潔的方法可以達到您想要的結果:

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

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM