Javascript 字符串[0]。toUpperCase()是否未返回预期结果?

Javascript 字符串[0]。toUpperCase()是否未返回预期结果?,javascript,Javascript,我试图将字符串中每个单词的第一个字母大写。我的代码如下: function LetterCapitalize(str) { var words=str.split(" "); var newArray=[]; for(i=0; i<words.length; i++) { var aWord=words[i]; //this line below doesn't work...don't know why! a

我试图将字符串中每个单词的第一个字母大写。我的代码如下:

function LetterCapitalize(str)
{
    var words=str.split(" ");
    var newArray=[];
    for(i=0; i<words.length; i++)
    {
        var aWord=words[i];
        //this line below doesn't work...don't know why!
        aWord[0]=aWord[0].toUpperCase();
        newArray.push(aWord);
    };
    newArray.join(" ");
    return newArray;
};
函数字母大写(str)
{
var words=str.split(“”);
var newArray=[];

for(i=0;i
aWord[0]
是一个字符,您不能将一个字符指定为一个新字符,如
'a'='b'

改用变量

for(i=0; i<words.length; i++)
{
    var aWord=words[i];
    //this line below doesn't work...don't know why!
    var newChar =aWord[0].toUpperCase();
    newArray.push(newChar);
};
for(i=0;i字符串是不可变的,因此这不会做任何事情:

aWord[0]=aWord[0].toUpperCase();
相反,您必须创建一个新字符串:


您可以编写一个函数来完成u的工作,如下所示

function capsFirstLetter(str){
return str.substr(0,1).toUpperCase()+str.substr(1);

}
capsFirstLetter("hello") // Hello
或者,您可以在String类中添加该方法,并将其用于所有String实例

   String.prototype.capsFirstLetter = function(){
       return this.substr(0,1).toUpperCase() + this.substr(1);
    } 
 "hello".capsFirstLetter() // "Hello"

您只能读取字符,不能对其进行变异。我本打算回答这个问题,但已经有很多好的答案。还有一件事需要注意:您可能希望
返回newArray.join(“”;
),现在您返回的是数组本身,而不是字符串。@EelkeSpaak谢谢大家提醒!
aWord[0]
是字符不,它是一个字符串,JavaScript没有“字符”,只有一个字符的字符串。而且,你的更新只在数组中放入一个字符的字符串,而我相当确定他们也需要单词的其余部分。你是对的,我并没有把它直接称为字符
   String.prototype.capsFirstLetter = function(){
       return this.substr(0,1).toUpperCase() + this.substr(1);
    } 
 "hello".capsFirstLetter() // "Hello"