返回提供的字符串时出现Javascript错误,每个单词的第一个字母都大写

返回提供的字符串时出现Javascript错误,每个单词的第一个字母都大写,javascript,string,Javascript,String,我正在解决一个基本的编码挑战,我觉得我的代码应该可以工作。但此行没有正确重新分配“str[i][0]=str[i].charAt(0).toUpperCase();” 我只是不知道为什么在Javascript中会这样,我想我已经在Ruby中毫无问题地解决了同样的问题。如果您有任何关于如何在Javascript中了解更多信息的提示或链接,我们将不胜感激 这就是挑战: 返回提供的字符串,每个单词的第一个字母大写 function titleCase(str) { str = str.toLo

我正在解决一个基本的编码挑战,我觉得我的代码应该可以工作。但此行没有正确重新分配“
str[i][0]=str[i].charAt(0).toUpperCase();

我只是不知道为什么在Javascript中会这样,我想我已经在Ruby中毫无问题地解决了同样的问题。如果您有任何关于如何在Javascript中了解更多信息的提示或链接,我们将不胜感激

这就是挑战:

返回提供的字符串,每个单词的第一个字母大写

function titleCase(str) {
    str = str.toLowerCase();
    str = str.split(" ");
    for (var i = 0; i < str.length; i++) {
        str[i][0] = str[i].charAt(0).toUpperCase();
    }
    str = str.join(" ");
    return str;
}
console.log(titleCase("I'm a little tea pot"));
功能滴定酶(str){
str=str.toLowerCase();
str=str.split(“”);
对于(变量i=0;i
在JavaScript中,字符串是不可变的对象。因此,一旦创建了字符串对象,就不能更改其中的单个字符,但需要创建一个新的字符串对象。所以,你最好做这样的事情

function titleCase(str) {
    str = str.toLowerCase().split(" ");
    for (var i = 0; i < str.length; i++) {
        str[i] = str[i].charAt(0).toUpperCase() + str[i].substring(1);
    }
    return str.join(" ");
}
console.log(titleCase("I'm a little tea pot"));
# I'm A Little Tea Pot
我们获取每个单词的第一个字符,将其转换为大写,然后将其与实际字符串的其余部分连接起来,并将新创建的字符串对象存储回
str
数组中


除此之外,如果您更喜欢功能触控来解决此问题,您可以这样做

function titleCase(str) {
    return str.toLowerCase().split(" ").map(function(currentPart) {
        return currentPart.charAt(0).toUpperCase() + currentPart.substring(1);
    }).join(" ");
}
函数将调用传递给它的函数,每个元素都来自
split
数组,并返回另一个数组。最后,我们使用
join

将所有元素连接在一起,JavaScript字符串不是数组(如
C
)。
function titleCase(str) {
    return str.toLowerCase().split(" ").map(function(currentPart) {
        return currentPart.charAt(0).toUpperCase() + currentPart.substring(1);
    }).join(" ");
}