我有以下代码,应该将每个单词的第一个字母大写。但是第一个字符 arr[i][0] 没有更新。我最终做了 arr[i] = arr[i][0].toUpperCase() + arr[i].substr(1) ,它有效,但我不明白为什么下面的不起作用。
function titleCase(string) {
const arr = string.split(' ');
for (let i = 0; i < arr.length; i++){
arr[i][0] = arr[i][0].toUpperCase();
}
return arr.join(' ');
}
最佳答案
因为字符串在 JavaScript 中是不可变的,这意味着您无法更改它们。每次尝试修改字符串时,实际上都是在创建一个包含更改的新字符串。
所以当你这样做时arr[i][0]
,它不是对第一个字符的引用,而是对第一个字符的副本的引用。由于您没有保留该引用(即将其分配给变量),因此它会丢失。
你修复它的方式arr[i] = arr[i][0].toUpperCase() + arr[i].substr(1)
是一种好方法。
关于javascript - 无法更新字符串的第一个字符 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570704/