gpt4 book ai didi

javascript - 由于奇怪的原因数组更改值

转载 作者:行者123 更新时间:2023-11-28 17:27:15 25 4
gpt4 key购买 nike

给出以下代码:

function createJson() {
var varry = new Array();
varry = x;
for (i=0 ; i < arry.length ; i++) {
if (arry[i]["questionVisibility"] == "1"){
if (arry[i]["questionType"] != 3) {
varry[i][1] = document.getElementById('te'+arry[i]["id"]+'et').value;
} else {
e = document.getElementsByName("te"+arry[i]["id"]+"et")[0];
p = e.options[e.selectedIndex];
varry[i][1] = p.text;
}
}
}

console.log(x);
console.log(varry);

其中 X 是一个像这样创建的数组(在不同的函数内):

x = document.getElementById("jsonData").value;
x = JSON.parse(x);
x = x[0];
x = x.data;
x = JSON.parse(x);

谁能解释一下为什么当我调用 createJson() 函数时,x 数组发生了变化? (调用 createJson() 时 x 已经创建)提前致谢!

最佳答案

因为线路

varry = x;

将数组分配给变量会创建原始值的一种引用,因此当您修改 varry 时,它也会修改 x

如果您想将 x 的副本复制到 varry 中而不使用引用array.slice() 像这样:

varry = x.slice();

这会将 x 中的值插入到 varry 中,而不创建对原始数组的“引用”

关于javascript - 由于奇怪的原因数组更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51263076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com