繁体   English   中英

为什么保存的数组会更改其值?

[英]Why does the saved array change its value?

我有以下设置

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应该具有与之前和之后相同的值。 但是以某种方式也可以操纵指定的数组。 我曾经尝试保存它,但是它确实会改变。

jsfiddle

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

您只使save_ar引用了array1命名的array1 您要做的是复制数组及其内容。 采用:

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

代替:

save_ar = array1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM