javascript - 无法更新字符串的第一个字符 - Javascript

标签 javascript string uppercase

我有以下代码,应该将每个单词的第一个字母大写。但是第一个字符 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/

相关文章:

python - 如何加入满足特定条件的列表元素?

uppercase - 如何进行文本转换 :uppercase work properly with Greek?

Java - 2D 字符串数组、动态表和空指针异常

javascript - 异步调用和更新变量

javascript - 如何在 React Native 中使用 Jest 测试 lodash 的去抖功能?

javascript - 从本地存储中删除数组项

c - C 语言中使用指针处理字符串

c# - 检查 Uppercase 函数是否有效

ruby - 如何在 Ruby 中将字符串转换为小写或大写

Javascript 对话框自动高度无法正常工作