Node.js JSON.stringify在迭代尝试时导致奇怪的只读字符串

Node.js JSON.stringify在迭代尝试时导致奇怪的只读字符串,node.js,string,iteration,Node.js,String,Iteration,我试图迭代一个字符串,但似乎遇到了一个奇怪的访问冲突,这个问题是在传递从JSON.stringify返回的值时引起的,因为数据似乎是只读的,在多次尝试使用黑客方法来解决这个问题时,我都没有成功地这样做 我尝试过复制数据,手动迭代字符串并将字符串复制到另一个变量,但无论我尝试了什么,问题仍然是一样的 当未传递受保护的数据时,下面的代码可以完美地工作 xor_swap(keys, data) { for(var i = 0; i < data.length; i

我试图迭代一个字符串,但似乎遇到了一个奇怪的访问冲突,这个问题是在传递从JSON.stringify返回的值时引起的,因为数据似乎是只读的,在多次尝试使用黑客方法来解决这个问题时,我都没有成功地这样做

我尝试过复制数据,手动迭代字符串并将字符串复制到另一个变量,但无论我尝试了什么,问题仍然是一样的

当未传递受保护的数据时,下面的代码可以完美地工作

    xor_swap(keys, data)
    {
        for(var i = 0; i < data.length; i++)
            data[i] ^= this.xor_key_exchange(keys, i);

        return data.toString('utf8');
    }
请注意,输入是完全正确的,我已经测试过很多次了

当然,预期的结果是字符串应该是可迭代的,在与一些非常熟悉nodejs的人交谈之后,他们似乎不明白为什么会出现这个问题

我没有对任何人使用严格模式


感谢所有能够帮助我解决这个问题的人,Javascript中的字符串是不可变的。您不能执行以下操作

var a='hello';
a[1]=“a”//尝试将“e”更改为“a”,这是不可能的

log(a)
感谢您的回复,我注意到转换为字符串确实是不可变的

因此,我最终解决了这个问题,只需将字符串转换为缓冲区,完成xor,然后将缓冲区直接转换回utf8字符串

    xor_swap(keys, data)
    {
        var buf = Buffer.from(data);

        for(var i = 0; i < buf.length; i++)
            buf[i] ^= Math.abs(this.xor_key_exchange(keys, i));

        return buf.toString('utf8');
    }
异或交换(键、数据) { var buf=缓冲区。从(数据); 对于(变量i=0;i 非常感谢你的帮助

    xor_swap(keys, data)
    {
        var buf = Buffer.from(data);

        for(var i = 0; i < buf.length; i++)
            buf[i] ^= Math.abs(this.xor_key_exchange(keys, i));

        return buf.toString('utf8');
    }