我正在使用http://facebook.github.io/immutable-js/docs/#/Map
中的不可变地图我需要获取一组值以传递给后端服务,我想我遗漏了一些基本的东西,我该怎么做?
我试过了:
mymap.valueSeq().toArray()
但是我仍然得到一个不可变的数据结构?
例如:
var d = '[{"address":"10.0.35.118","cpus":4}]';
var sr = JSON.parse(d);
var is = Immutable.fromJS(sr);
console.log(sr);
console.log(is.toArray());
console.log(is.valueSeq().toArray());
请参阅此http://jsfiddle.net/3sjq148f/2/
我们从不可变数据结构返回的数组似乎仍然装饰着每个包含对象的不可变字段。这是预期的吗?
答案 0 :(得分:19)
只需使用someMap.toIndexedSeq().toArray()
获取一组唯一值。
答案 1 :(得分:11)
这是因为sr
是Array
的{{1}},所以如果您使用Object
进行转换,它会变为.fromJS
List
}。
此处不需要Map
(is.valueSeq().toArray();
。)将其转换为valueSeq
的{{1}},因此您需要循环遍历数组,并转换每个Array
1}}项目到Map
。
Map
Array
答案 2 :(得分:6)
Map.values()
会返回ES6 Iterable(与Map.keys()
和Map.entries()
一样),因此您可以转换为Array.from()
或spread operator的数组(如this answer)中所述。
e.g:
Array.from(map.values())
或只是
[...map.values()]