2016-02-27 73 views
0

問候同胞程序員,矩陣推到一個數組

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

我有這樣的陣列稱爲arrStack這意味着是我的籌碼,我想推一些矩陣在裏面。彈出()函數工作正常,但當我試圖操縱一個數組,並將它推到堆棧,它似乎並沒有正常工作,例:

預期:

[ 

     [[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]] 

] 

爲什麼會發生這種情況,我該如何解決它?

+1

你能解決您的jsfiddle所以我們可以理解這個問題比較好? –

+0

我沒有將矩陣可視化爲div的能力,您是否可以創建一個新的html和js項目,複製粘貼並檢查瀏覽器開發工具的控制檯? – murloc

回答

2

發生這種情況是因爲當你做arrStack.push(arr)時,你不推送arr實例的克隆,而是推送一個引用。

您可以通過將arr轉換爲JSON並像下面那樣解析它來避免這種情況。

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

這是您的工作code

+1

非常感謝:) – murloc

+0

如果它爲你工作,你能接受答案嗎? –

+0

是的,但我該怎麼做? – murloc

1

附加@ KARTHIK-RP

或使用Array#slice()

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