Javascript 为什么我的for循环在函数内部使用push时不起作用?

Javascript 为什么我的for循环在函数内部使用push时不起作用?,javascript,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,

我试图通过一个函数传递一个短语,这样每个第一个字母都是大写的,其他的都是小写的。我有以下功能:

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");
功能滴定酶(str){
var数组=[];

对于(var i=0;i[EDIT]

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

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") );
函数标题库(字符串){
var数组=string.split(“”);
var newString='';

对于(var i=0;i[EDIT]

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

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") );
函数标题库(字符串){
var数组=string.split(“”);
var newString='';
对于(var i=0;i1)不命名变量数组,这是一个JavaScript保留字,例如可以使用“arr”

2) 在您的代码中,您将句子拆分为一个单词数组,但您仅将toLowerCase应用于第一个单词

3) 有一种更干净的方法可以实现您想要的结果:

function capitalize(str) {
    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
} 
console.log( capitalize("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") );

希望有帮助。

您正在返回array.push的结果,这是一个数字。您的返回在for循环中,因此它也只运行一次,因为您放置了“return array.push(str);”它将在第一次迭代时返回函数值,但第二次、第三次等将永远不会被触发。
str=str.split(“”)
使用
i,您将返回array.push的结果,这是一个数字。我们的返回在for循环中,因此它也只运行一次,因为您放置了“return array.push(str)”;它将在第一次迭代时返回函数值,但第二次、第三次等将永远不会被触发。此外,
str=str.split(“”)
使用
我得到以下错误代码:TypeError:无法读取未定义的属性“toLowerCase”。接下来的一个问题是,为什么要从IB中修改循环内部,因为循环从0开始,但长度从1开始计数,所以要使它们对齐,可以从长度中删除一个或从1开始计数,但我建议r 0,因为这是数组的起始索引,如果要循环一个数组,那么我的也要从它的起始位置开始。我得到以下错误代码:TypeError:无法读取未定义的属性“toLowerCase”。接下来的一个问题是,为什么要从IB中修改循环内部,因为你从0开始循环,但长度开始计数在1,所以要让它们对齐,你要么从长度中删除一个,要么从1开始计数,但我更喜欢0,因为这是数组的起始索引,如果你要循环通过一个,我的也从它的起始位置开始。这只适用于第一个字母,例如,它将“句子测试”转换为“句子测试”,但我要做的是我想我回答了你的问题:)这只适用于第一个字母,例如,它将“句子测试”转换为“句子测试”,但我想的是“句子测试”,也将第一个字母大写在第二个单词上。我想我是说d你的问题:)