Javascript 为什么我不能为数组中的字符串指定新值?
在字符串中的每个单词中,每个单词中的每个偶数索引字符都应该大写 示例:“这是一个示例”->“这是一个示例” 我知道这不是解决这个问题的最好办法,但我想知道为什么上一个作业不起作用Javascript 为什么我不能为数组中的字符串指定新值?,javascript,Javascript,在字符串中的每个单词中,每个单词中的每个偶数索引字符都应该大写 示例:“这是一个示例”->“这是一个示例” 我知道这不是解决这个问题的最好办法,但我想知道为什么上一个作业不起作用 function toWeirdCase(string) { const arr = string.toLowerCase().split(' ') for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length;
function toWeirdCase(string) {
const arr = string.toLowerCase().split(' ')
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j += 2) {
let temp = arr[i][j] // temp = t, i, i
temp = temp.toUpperCase() // temp = T, I, I
arr[i][j] = temp // arr[i][j] = t, i, i but why not T, I, I
}
}
return arr.join(' ')
}
console.log(toWeirdCase('This is'))
函数类型(字符串){
const arr=string.toLowerCase().split(“”)
for(设i=0;i
因为Javascript中的字符串不是这样工作的(像数组)。您可以执行以下操作,而不是执行arr[i][j]=temp
const str = arr[i]
arr[i] = str.substr(0, j) + str[j].toUppercase() + str.substr(j + 1);
arr
是一个字符串数组,因此arr[i]
是一个字符串,arr[i][j]=temp
尝试更改字符串中的字符,但在JavaScript中字符串是不可变的
下文对此进行了解释:
使用括号表示法进行字符访问时,尝试删除或为这些属性赋值将不会成功。所涉及的属性既不可写也不可配置
为了解决赋值问题,您可以将加扰后的值构建成一个新字符串(我们将其命名为mixed
,每次追加一个字符(mixed=mixed+temp.toUpperCase()
),然后在外部for
将mixed
放回arr[i]
:
const arr=str.toLowerCase().split(“”)
for(设i=0;i
Strings是不可变的arr
是一个字符串数组,因此arr[i]
是一个字符串,arr[i][j]=temp
尝试更改字符串中的字符,但在JavaScript中字符串是不可变的。为了解决赋值问题,您可以将加扰值构建成一个新字符串(我们把它命名为mixed
,每次加一个字符(mixed=mixed+temp.toUpperCase()
)然后,在的外部将mixed
放回arr[i]
。哦,是的,这解释了一切。谢谢!