为什么我的for循环使用push函数不起作用?

时间:2017-04-05 15:19:36

标签: javascript

我正在尝试通过一个函数传递一个短语,以便每个首字母大写,其他一切都是小写。我有以下功能:

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循环,该函数将起作用,并将小写所有内容,然后将每个单词的第一个字母大写。

2 个答案:

答案 0 :(得分:2)

<强> [编辑]

有很多方法可以做到,但试试这个...

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 :(得分:0)

1)不要命名你的变量数组,即一个JavaScript保留字,你可以使用“arr”作为例子。

2)在你的代码中,你将句子分成一个单词数组,但你只是将toLowerCase应用到第一个单词。

3)有一种更清洁的方式来实现你想要的结果:

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

希望它有所帮助。