将矩阵推送到数组

时间:2016-02-27 11:32:20

标签: javascript arrays matrix

问候其他程序员,

https://jsfiddle.net/martin_varbanov/vq5hhzmo/2/

我有一个名为arrStack的数组,它应该是我的堆栈,我想在其中推送一些矩阵。 pop()函数工作正常,但是当我尝试操作数组并将其推送到堆栈时,它似乎无法正常工作,例如:

预期:

[

        [[1, 1, 1, 1], [1, 1, 1, 1]]
        [[2, 2, 2, 2], [2, 2, 2, 2]]        
]

结果:

[
    [[2, 2, 2, 2], [2, 2, 2, 2]]
    [[2, 2, 2, 2], [2, 2, 2, 2]]

]

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为当您执行arrStack.push(arr);时,您没有推动arr实例的克隆,但是您正在推送引用。

您可以通过将arr转换为JSON并将其解析回来来避免这种情况。

arrStack.push(JSON.parse(JSON.stringify(arr)));

这是您的工作code

答案 1 :(得分:1)

@ karthik-rp

的补充

或使用Array#slice()

arrStack.push(arr.map(function(e) {
    return e.slice();
}));