【问题标题】:Mutate one letter of a string inside an array [duplicate]改变数组中字符串的一个字母[重复]
【发布时间】:2021-10-29 10:36:39
【问题描述】:

我想了解为什么我不能使用这种结构将我的数组字符串的首字母大写。

function capitalize(array){
  for (let i = 0; i < array.length; i++){
    array[i][0] = array[i][0].toUpperCase() 
  }
  return lst;
}

我已经重写了我的代码,使其工作:

function capitalize(array){
  for (let i = 0; i < array.length; i++){
    array[i] = array[i][0].toUpperCase() + array[i].slice(1) 
  }
  return array;
}

但我想更深入地了解原因

【问题讨论】:

    标签: javascript


    【解决方案1】:

    字符串是Immutable,所以你不能修改一个字符串的单个字母并进行原始更改,你必须分配一个全新的字符串。

    let str = 'Hello';
    
    str[0] = 'G' // doesn't actually do anything, since str is immutable
    
    console.log(str)
    
    str = 'G' + str.slice(1) // assigns a new string to str, so it works
    
    console.log(str)

    【讨论】:

      【解决方案2】:

      字符串是不可变的。您需要重新分配整个字符串。

      let arr = ["this", "is", "a", "test", "string"]
      
      function capitalize(array){
        for (let i = 0; i < array.length; i++){
          array[i] = array[i].replace(array[i][0], array[i][0].toUpperCase() )
        }
        console.log( array);
      }
      capitalize(arr)

      【讨论】:

        猜你喜欢
        • 2021-05-28
        • 2019-11-17
        • 1970-01-01
        • 2019-12-09
        • 2013-02-21
        • 1970-01-01
        • 2018-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多