2017-04-16 11 views
1

数値の配列に対してmin演算子を使用できるとわかりました。しかし、私はどのようにオブジェクトの配列に数値プロパティを使用してそれを使用しますか?Rxjsは配列プロパティのmin演算子を使用します

var source = Rx.Observable.fromArray([1,3,5,7,9,2,4,6,8]).min(); 

これはドキュメントの記述方法です。これにより、1が出力されます。どうすればいいですか...

var source = Rx.Observable.fromArray([{a: 1, b:"first"},{a: 3, b:"second"},{a: 5, b:"third"}]).min(); 

内部プロパティ値でminを使用します。したがって、配列内の各オブジェクト内のaの値を比較し、そのオブジェクトを放出します。

私は分かりましたが、ここで使用できるかわかりません。

私はまた、それが最小のプロパティ値ではなく、オブジェクトを放出したいと思います。

編集:

だから、私は角4アプリでNgrxを使用して観察可能store.selectmin演算子を使用しようとしています。いくつかのreasongのために、私は最初にサブスクリプションを作成し、次にレスポンスから別のオブザーバブルを作成してからminワークを使用しますが、サブスクリプションをスキップしてより低いコードのようなmin演算子を使用しようとすると失敗し、 ClientFacilitiesの完全な配列。

何が起こっているのか分かりませんか?彼らはどちらも同じものではありませんか?

これは動作します:

this.store.select(fromRoot.getClientFacilitiesArray).take(1).subscribe(res => { 
        Observable.from(res).min<ClientFacility>((a, b) => a.leaders_assigned - b.leaders_assigned) 
         .subscribe(res => console.log(res)); 
       }) 

これは失敗します。

this.store.select(fromRoot.getClientFacilitiesArray).take(1) 
.min<ClientFacility>((a, b) => a.leaders_assigned - b.leaders_assigned) 
         .subscribe(res => console.log(res)); 
+0

*私は分が比較関数をとり理解し、それは*ここで使用することができた場合、私は知らない。なぜそれを使用することができませんでしたか?なぜあなたも試してみませんか?ドキュメントには、達成したいことを**正確に**実行している例もあります:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-min –

+0

私は持っています。比較には2つの値があります。彼らは何であろうか?それを理解できません。例を挙げていただけますか? – notANerdDev

+1

私が言ったように、ドキュメントには例があります。この関数は、オブザーバブルから放出された2つのオブジェクトを取り、それらを比較します。 Array.sort()とまったく同じです。 –

答えて

3

Rx.Observable.fromArray([1,3,5,7,9,2,4,6,8]).min()がRxJS 5用RxJSで5

適切な場所に動作しませんRxJS 4の例ですドキュメントはhttp://reactivex.io/rxjs/であり、http://reactivex.io/documentation/にはRxJS 4のドキュメントが含まれています。

min operator documentationによれば、それはarray sort methodによって受け入れられるものと同様に動作する比較機能を受け入れることができます。

Hereは一例です:

Rx.Observable.from([{a: 1, b:"first"},{a: 3, b:"second"},{a: 5, b:"third"}]) 
.min((objA, objB) => objA.a - objB.a) 
.subscribe(val => console.log(val)); 
+0

あなたは編集を見てみることができますか?助けてくれてありがとう! – notANerdDev

+0

いいえ、それは別のものです。 'min'は、複数の値を持つ観測値を処理し、最小値を選びます。後者の場合、それは配列である単一の値を持つ観測値です。おそらく 'this.store.select(fromRoot.getClientFacilitiesArray).take(1).mergeMap(arr => Observable.from(arr))。min(...))'であるべきです。 – estus

関連する問題