Node.js JSON.stringify在迭代尝试时导致奇怪的只读字符串
我试图迭代一个字符串,但似乎遇到了一个奇怪的访问冲突,这个问题是在传递从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
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');
}