2016-06-02 8 views
1

Ich arbeite an einem Angular 2-Projekt und ich versuche, eine RxJS Observable 'EntitiesById' Hash/Karte zu erstellen. Im RxJS Github Repo there's mentioning of the .toMap() operator. Aber in meinem npm installiert rxjs Paket kann es nicht gefunden werden. Nur toArray() und .toPromise() sind verfügbar.RxJS - Wohin ging der Operator Rx.Observable.prototype.toMap?

Es wurde wahrscheinlich entfernt, weil die .toMap() Transformation unterschiedlich codiert werden soll oder eine bessere Alternative verwendet werden soll.

Was ist die RxJS (oder Angular 2) beste Praxis das gleiche Ergebnis zu erhalten (das heißt eine Karte/Hash von Objekten durch eine Taste)?

+1

'toMap' ist weg https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md –

+0

Danke @ GünterZöchbauer. Das bestätigt meine Annahme. Irgendeine Idee zu einem alternativen Weg, dies zu tun? –

Antwort

1

Ich denke reduce für dieses

someObservable 
.reduce(function(oldVal, newVal) { 
    oldVal[newVal.name] = newVal; 
    return oldVal; 
}, {}); 
funktionieren sollte

wo newVal.name die name Eigenschaft des Wertes nimmt und verwendet sie als Schlüssel für die Karte und weist den ganz neuen Wert als Wert (an Ihre Bedürfnisse anpassen)

+1

Danke Günter. Der Code benötigt eine kleine Syntaxänderung (ich habe ihn auf Ihre Antwort angewendet, aber er wird gerade überprüft, damit er angezeigt wird), aber der .reduce-Vorschlag funktioniert großartig! –

+0

Toll, vielen Dank für das Feedback :) –