为什么 array[i].charAt(0).toUpperCase() 不会传递给 array[i][0]

vin*_*tau 6 javascript arrays

我正在尝试制作一个 javascript 程序,它接受一个字符串并将每个单词的第一个字母大写,并使所有其他字符小写。

function titleCase(str) {
  str = str.toLowerCase();
  var array = str.split(" ");
  for(var i =0; i< array.length ; i++){
    array[i][0] = array[i].charAt(0).toUpperCase();

  } 
  var finalString = array.join(" ")
  return finalString ; 
}

console.log(titleCase("I'm a little tea pot"));
Run Code Online (Sandbox Code Playgroud)

由于某种原因array[i].charAt(0).toUpperCase();不会将其值传递给array[i][0]. 这最终使它返回仅包含小写字母的字符串,而不是每个单词的第一个字母都大写。

Col*_*inD 3

听起来你想做更多类似这样的事情:

function titleCase(str) {
  str = str.toLowerCase();
  var array = str.split(" ");
  for(var i =0; i< array.length ; i++){
    //array[i] is an immutable string. So we need to rebuild it instead.
    array[i] = array[i].charAt(0).toUpperCase() + array[i].substring(1);
  } 
  var finalString = array.join(" ")
  return finalString; 
}

titleCase("I'm a little tea pot");
Run Code Online (Sandbox Code Playgroud)

可以使用括号表示法将字符串读取为字符数组。但是,您不能以这种方式更改特定字符,因为字符串不是可变对象。