Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我不能为数组中的字符串指定新值?_Javascript - Fatal编程技术网

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]
。哦,是的,这解释了一切。谢谢!