Immutable.js:如何在导出到数组时保持不变性

Immutable.js: How to maintain immutability when exporting to array?

本文关键字:数组 不变性 js Immutable      更新时间:2023-09-26

我将一个数组传递给一个不可变的列表对象。然而,当列表被转换为一个数组时,不可变的列表对象会被修改,该数组随后被更新。

因此,不可变列表仍然是可变的,我如何避免这种情况,同时仍然能够返回一个数组进行处理?

请同时提供解释。下面是一些psuedo代码来说明这个场景:

var data = [{id:'a'}, {id:'b'}, {id:'c'}];
var immutables = Immutable.List(data).asImmutable(); //Immutable list?
var myData = immutables.toArray();
myData[0] = {id:'x'}; //object is updated in immutable list as well

在不可变结构中包含可变数据几乎总是一个坏主意。(从另一方面来说,这更有意义)。为了避免这种情况,请使用Immutable.fromJS(数据),而不是Immutable.List(数据)和Immutable.Map(数据)-正如@mostruesh所建议的那样。