Immutable.js 将值映射到数组
Immutable.js Map values to array
我正在使用来自 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/
我们从不可变数据结构返回的数组似乎仍然装饰着每个包含对象的不可变字段。这是可以预料的吗?
只需使用 someMap.toIndexedSeq().toArray()
获取仅包含值的数组。
因为sr
是Object
的Array
,所以用.fromJS
转换成List
的Map
.
中的is.valueSeq().toArray();
(valueSeq
这里不需要。)将其转换为Map
的Array
,所以需要循环遍历数组,将每个Map
项到 Array
。
var d = '[{"address":"10.0.35.118","cpus":4}]';
var sr = JSON.parse(d);
// Array of Object => List of Map
var is = Immutable.fromJS(sr);
console.log(sr);
console.log(is.toArray());
// Now its Array of Map
var list = is.valueSeq().toArray();
console.log(list);
list.forEach(function(item) {
// Convert Map to Array
console.log(item.toArray());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.7.5/immutable.min.js"></script>
Map.values()
returns an ES6 Iterable (as do Map.keys()
and Map.entries()
), and therefore you can convert to an array with Array.from()
or the spread operator (as described in this answer).
例如:
Array.from(map.values())
或者只是
[...map.values()]
我正在使用来自 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/
我们从不可变数据结构返回的数组似乎仍然装饰着每个包含对象的不可变字段。这是可以预料的吗?
只需使用 someMap.toIndexedSeq().toArray()
获取仅包含值的数组。
因为sr
是Object
的Array
,所以用.fromJS
转换成List
的Map
.
中的is.valueSeq().toArray();
(valueSeq
这里不需要。)将其转换为Map
的Array
,所以需要循环遍历数组,将每个Map
项到 Array
。
var d = '[{"address":"10.0.35.118","cpus":4}]';
var sr = JSON.parse(d);
// Array of Object => List of Map
var is = Immutable.fromJS(sr);
console.log(sr);
console.log(is.toArray());
// Now its Array of Map
var list = is.valueSeq().toArray();
console.log(list);
list.forEach(function(item) {
// Convert Map to Array
console.log(item.toArray());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.7.5/immutable.min.js"></script>
Map.values()
returns an ES6 Iterable (as do Map.keys()
and Map.entries()
), and therefore you can convert to an array with Array.from()
or the spread operator (as described in this answer).
例如:
Array.from(map.values())
或者只是
[...map.values()]