我有一个数组,在没有其他说明之前,我希望保持不变。如何防止其更改?

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()。但是我无法使其正常工作。

最佳答案

在修改功能中,您需要先从Immutable进行转换,先进行修改,然后再转换回Immutable

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


这是更新的代码:
https://jsfiddle.net/zvhp5k91/

10-06 07:49