Javascript ImmutableJS集不平坦
我有以下代码:Javascript ImmutableJS集不平坦,javascript,list,immutable.js,ecmascript-6,Javascript,List,Immutable.js,Ecmascript 6,我有以下代码: Immutable.Set(['valor1', 'valor2', 'valor2', 'valor3', ['valor4', 'valor5']]).flatten().toJS(); 这不会像预期的那样工作,但会返回与输入相同的结果。如果我将其视为一个列表,它将按预期工作: Immutable.fromJS(['valor1', 'valor2', 'valor2', 'valor3', ['valor4', 'valor5']]).flatten().toJS(
Immutable.Set(['valor1', 'valor2', 'valor2', 'valor3', ['valor4', 'valor5']]).flatten().toJS();
这不会像预期的那样工作,但会返回与输入相同的结果。如果我将其视为一个列表,它将按预期工作:
Immutable.fromJS(['valor1', 'valor2', 'valor2', 'valor3', ['valor4', 'valor5']]).flatten().toJS(); // return flattened list
与Set一起使用展平功能有什么问题
与Set一起使用展平功能有什么问题
没什么问题。似乎您对设置
和展平
的工作方式有错误的认识。从:
仅展平其他Iterable,而不是数组或对象
Immutable.fromJS(…)
将值深度转换为映射和列表,因此内部数组被转换为Immutable.List
,这就是它工作的原因。构造函数不进行深度转换,因此集合中包含一个数组(未展平)。不可变列表是一个Iterable,不可变集合不是吗?否。集合也是一个Iterable。同样,如果使用fromJS(…)
,内部数组将转换为List->Iterable。如果使用Set(…)
,则内部数组将保持为数组,而展平
不会展平数组。尝试Immutable.List(['valor1','valor2','valor2','valor3','valor4','valor5']])
得到的结果是相同的,而不是内部数组。没有一个构造函数这样做。只有fromJS
深度转换值:“将普通JS对象和数组深度转换为不可变的映射和列表。”这是您已经在做的事情。看起来你真正想知道的是如何将数组深度转换为集合。这可能不是一个简单的方法,那么您如何做Immutable.fromJS().flatte().toSet().toJS()代码>而不是?