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

标签 javascript arrays

给出以下代码:

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/

相关文章:

C - 将 2 个 2D 字符串数组组合并更改为更大的 2D 数组的最简单方法

javascript - D3 v4 - 获取当前缩放比例?

javascript - 使用 Lodash 查找 [] 数组内 JSON 数组的索引

javascript - 最多水的容器算法 - 使用递归

JavaScript - 有什么方法(不使用 html 事件属性)来获取 3 个不同的输入值以求和?

php - 如何分离数组中重复值的键

c - 通过 C 中的管道使用动态数组写入和读取结构

javascript - 如何将对象数组转换为唯一数组?

javascript - 如何在 jquery 中创建可编辑的表列

javascript - 使用 jQuery 动态获取输入字段的值并使用 PHP 处理它们