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/
不変データ構造から取得した配列は、含まれている各オブジェクトの不変フィールドでまだ装飾されているようです。それは予想されることですか?
sr
はArray
のObject
であるため、_.fromJS
_を使用して変換すると、List
of Map
になります。
is.valueSeq().toArray();
(valueSeq
はここでは必要ありません。)Array
のMap
に変換するため、配列をループして、各Map
item to 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>
_
値のみの配列を取得するには、someMap.toIndexedSeq().toArray()
を使用します。
Map.values()
はES6 Iterableを返します( Map.keys()
および Map.entries()
)、したがって Array.from()
または spread operator で配列に変換できます( this answer で説明) 。
例えば。:
Array.from(map.values())
あるいは単に
[...map.values()]