web-dev-qa-db-ja.com

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/

不変データ構造から取得した配列は、含まれている各オブジェクトの不変フィールドでまだ装飾されているようです。それは予想されることですか?

22
LenW

srArrayObjectであるため、_.fromJS_を使用して変換すると、List of Mapになります。

is.valueSeq().toArray();valueSeqはここでは必要ありません。)ArrayMapに変換するため、配列をループして、各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>_
14
fuyushimoya

値のみの配列を取得するには、someMap.toIndexedSeq().toArray()を使用します。

21
Hüseyin Zengin

Map.values() はES6 Iterableを返します( Map.keys() および Map.entries() )、したがって Array.from() または spread operator で配列に変換できます( this answer で説明) 。

例えば。:

Array.from(map.values())

あるいは単に

[...map.values()]

7
ericsoco