javascript - 为什么保存的数组的值会改变?

标签 javascript arrays

我有以下设置

代码

array1 = [['2001-05-01', 20], ['2001-05-02', 23], ['2001-05-03', 18]];

save_ar = array1;
plotarrays2 = [array1];
plotarrays2.push(new_series2(array1, save_ar, 0, 1, 0.1));

function new_series2(origin, stated, start, end, factor) {
    var result = [[]];
    console.log("before " + stated[0][1]);
    result = stated.map(function (item, index) {
        if (index < start || index >= end) return [item[0], 0];
        else return [item[0], item[1] * factor];
    })
    console.log("after " + stated[0][1]);
    for (var i = 0; i < result.length; i++) {
        origin[i][1] = parseInt(origin[i][1]) - result[i][1];
        console.log("after2 " + stated[0][1]); // why????
    }
return result;
};

问题

我希望 after2 应该具有与 before 和 after 相同的值。但不知何故,指定的数组也被操纵了。我之前尝试保存它,但它确实发生了变化。

jsfiddle

http://jsfiddle.net/gcollect/amsn3/

最佳答案

您仅使 save_ar 引用由 array1 命名的数组。您想要做的是复制该数组及其内容。使用:

save_ar = array1.map(function (item) {
    return item.slice(0);
});

而不是:

save_ar = array1;

关于javascript - 为什么保存的数组的值会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24231897/

相关文章:

javascript - 软件 3d 引擎中的投影数学

javascript - 获取窗口高度

javascript - 如何在javascript中通过索引访问多维数组?

javascript - 为什么 jQuery 中的某些函数以 `$.` 开头?

c - 将函数的返回值存储在C中的变量中

javascript - 如何阻止刷新浏览器时重置调整大小的 JavaScript 代码

javascript - 使用数组检查单选形式的多个答案

python - 将数组从 C++ 返回到 Python

javascript - 如何从 api 查看商品并将商品添加到购物车

arrays - 在 Matlab 中存储固定大小和数据类型的多个图像的所有可能且内存有效的方法是什么?