Immutable.js将值映射到数组

时间:2015-10-15 12:38:35

标签: javascript immutable.js

我正在使用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/

我们从不可变数据结构返回的数组似乎仍然装饰着每个包含对象的不可变字段。这是预期的吗?

3 个答案:

答案 0 :(得分:19)

只需使用someMap.toIndexedSeq().toArray()获取一组唯一值。

答案 1 :(得分:11)

这是因为srArray的{​​{1}},所以如果您使用Object进行转换,它会变为.fromJS List }。

此处不需要Mapis.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()]