Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ImmutableJS集不平坦_Javascript_List_Immutable.js_Ecmascript 6 - Fatal编程技术网

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()而不是?