2015-10-15 8 views
8

に私は私がどのように、私はバックエンドサービスに渡す値の配列を取得する必要があると私は、私は基本的な何かが足りないと思うhttp://facebook.github.io/immutable-js/docs/#/MapImmutable.js地図値配列

から不変地図を使用していますそれ?

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/

を参照してください、我々は戻って不変のデータ構造から取得配列は、まだ含まれる各オブジェクトの不変フィールドで飾られているように見えます。それは期待されますか?

+1

は、あなたがより多くの詳細を与えることはできますか?また、あなたは 'toJS'を試してみることができると思います。 –

+1

[jsfiddle](https://jsfiddle.net/3sjq148f/1)、私のために働く。あなたは 'valueSeq'を必要としません。それを再現するサンプルを作成できますか? – fuyushimoya

+2

この試してみてください。あなたにぴったり@fuyushimoya 'VAR配列は= [] mymap.valueSeq()はforEach(機能(アイテム){のArray.push(アイテム)})' – javaguest

答えて

3

srObjectArrayあるので、あなたはそれを変換するために.fromJSを使用する場合、それはMapListなるからです。 is.valueSeq().toArray();

valueSeqは。ここでは必要ありません)あなたは、配列をループする必要があり、Arrayに各Mapアイテムを変換するので、MapArrayに変換します。

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()
12

someMap.toIndexedSeq().toArray()だけの値の配列を取得するために使用してください。