2016-12-14 25 views
1

我有一個數組,我想保持不變,直到我說不然。我如何防止它改變?防止2D陣列變異,javascript

var orgArr = [[1,1], [2,2]]; 


function modArr(arr){ 
    arr[0][0] = 5; 
    return arr; 
} 

modArr(orgArr); 
console.log(orgArr); // It has changed 

https://jsfiddle.net/50e6k7mc/

我嘗試了一些與不可變(我加入到小提琴)。

喜歡的東西

var orgArr = Immutable.List([[1,1],[2,2]]) 

然後使用toArray()。但我無法讓它工作。

+0

老兄,你爲什麼要刪除以前的問題?我回答了。 –

回答

0

在你修改函數,你需要從不可改變的先轉換,修改,然後再轉換回永恆

arr=arr.toArray(); 
//.... modify arr 
//.... 
arr= arr.fromJS(arr); 

這裏是更新後的代碼: https://jsfiddle.net/zvhp5k91/