改变数组中字符串的一个字母



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

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;
}

但我想更深入地了解为什么

字符串是不可变的,所以你不能修改字符串的单个字母,而有原来的改变,你必须分配一个全新的字符串。

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)

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

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)

最新更新