2016-12-14 21 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/