2017-01-26 2 views
3

オブジェクトマップを返すサービスがあり、これは配列をとるAngularのngForで使用されます。したがって、私はlodashの_toArrayでマップ演算子を使ってデータを配列に変換しています。RxJS5 - オブジェクトマップを配列に変換する演算子

これは機能しますが、私はこれを行う必要があるすべての場所でlodashをインポートする必要があり、脆いようです。私はカスタムオペレーターを作ることに目を向けようとしていましたが、すでにこれを行っているオペレーターがいますか?

{ 0 : {data : 'lorem'}, 1 : {data : 'lorem'}, 2 : {data : 'lorem'} } 

現在::

this.http 
    .get('/api') 
    .map(data => _.toArray(data)); 

可能な私は

データ正しいもの(複数可)を見つけることができないよう?

this.http 
    .get('/api') 
    .mapToArray(); 
+0

。次に、フィルターを定義した場所にlodashを1回だけインポートする必要があります。 https://docs.angularjs.org/guide/filter – aarosil

答えて

6

あなたはRxJSのmapオペレータとだけObject.keys()方法でやりたいことができるはずです。あなたはこのために、内蔵 `filter`アンギュラ使用することができます

Rx.Observable 
 
    .of({ 
 
    0: { data : 'lorem' }, 
 
    1: { data : 'lorem' }, 
 
    2: { data : 'lorem' } 
 
    }) 
 
    .map(data => Object.keys(data).map(k => data[k])) 
 
    .subscribe(data => console.log(data));
<script src="https://npmcdn.com/@reactivex/[email protected]/dist/global/Rx.min.js"></script>

+0

これは必ずしも要素が正しい順序で出力されるわけではありません。 – cartant

+0

オペアンプが特定の順序で配列を必要としていた場所を見逃しましたか?私が似たように答えた理由は、その正確な理由です。そこにない仕様をコーディングする必要はありません。 –

+0

良い点。けっこうだ。 – cartant