Jestem nowy w RxJS. Wiem, że mogłem po prostu .filter
i .map
obserwować, aby uzyskać zmianę, której szukam. Ale czy istnieje jakaś metoda, która łączy te dwie funkcje w jedną?Czy istnieje metoda RX, która łączy mapę i filtr?
Odpowiedz
Tak, istnieje.
FlatMap.
Załóżmy, że masz obserwowalne liczby (1, 2, 3, 4, 5, ...) i chcesz filtrować liczby parzyste i zamapować je na x * 10.
var tenTimesEvenNumbers = numbers.flatMap(function (x) {
if (x % 2 === 0) {
return Rx.Observable.just(x * 10);
} else {
return Rx.Observable.empty();
}
});
Dziękuję za odpowiedź - nigdy bym nie uznał, że możesz to zrobić z dokumentów na płaskiej mapie. Wybieram odpowiedź @paulpdaniels, ponieważ jest bardziej funkcjonalna. –
Masz na myśli bardziej funkcjonalny w jakim sensie? –
Mam na myśli to, że w tym przykładzie operacja filtrowania musi zostać wykonana w parens instrukcji "if". Powiedzmy, że masz wspólną funkcję filtrującą, którą chcesz zastosować do tej operacji wiele razy, wciąż możesz to zrobić, ale pozostało ci pisanie wielu instrukcji if(). Dodatkowo musisz go wywoływać za każdym razem. Znacznie czystsze jest rozwiązanie, w którym można przekazać funkcje filtrowania i mapowania jako oddzielne argumenty. Moim zdaniem, rozwiązanie, które umożliwia ten styl kodowania jest bardziej "funkcjonalny". –
Nie, nie ma.
Ale dodanie jednego jest banalne.
Rx.Observable.prototype.filterMap = function (filterFn, selectorFn, context) {
return this.filter(filterFn, context)
.map(selectorFn, context);
}
Dzięki. Miałem nadzieję, że nie dodam czegoś takiego, ale może to być oszczędność czasu w przyszłości. –
- 1. Czy istnieje wtyczka JQuery, która łączy Draggable i Selectable
- 2. Jak połączyć filtr i mapę w scala?
- 3. Metoda Otsu i filtr Median w Pythonie
- 4. Czy istnieje metoda równoważna LINQ?
- 5. Czy istnieje metoda kliknięcia jQuery?
- 6. Czy istnieje metoda Java Stream równoważna kolekcjom Scali "collect"?
- 7. Klasa Java, która implementuje mapę i zachowuje kolejność wstawiania?
- 8. Która metoda zapisu MagicalRecord
- 9. Czy istnieje metoda Pythona do obliczania średniej logicznej i wariancji?
- 10. Konfigurowanie mapę, która przecina Dateline w cartopy
- 11. Czy istnieje metoda udostępniania i synchronizowania symulatora iOS Katalog aplikacji
- 12. Czy istnieje wersja $ getJSON, która nie oddzwoni?
- 13. Czy istnieje metoda "upto" w języku C#?
- 14. Różnica między tx i rx?
- 15. Czy istnieje metoda antyaliasingu dla Pythona PIL?
- 16. Czy istnieje taka metoda wywoływania "getBackgroundColor"?
- 17. Czy istnieje szybka metoda deklarowania funkcji inline?
- 18. Czy w strukturze istnieje ogólna metoda wymiany?
- 19. Czy istnieje metoda blokowania hosta w WINAPI?
- 20. Używanie brakującego i istnieje filtr razem w pojedynczym zapytaniu
- 21. Czy istnieje jakaś metoda w appDelegate, która jest wywoływana, gdy aplikacja ulega awarii?
- 22. W rcov, czy istnieje sposób, aby sprawdzić, która metoda testowa przetestowała dany testowany kod?
- 23. Czy Mongoid ma mapę/redukcję?
- 24. Mikrousługi i baza danych łączy
- 25. Przedmioty RX - czy należy ich unikać?
- 26. Sprawdź, czy metoda istnieje w tej samej klasie.
- 27. Jak można ustawić ISingleResult? Czy powinienem? czy istnieje lepsza metoda?
- 28. Łączy szereg i „%” w Sass
- 29. Aktorzy i pakowacze Akka.NET (potencjalnie z Rx)
- 30. jak zniszczyć mapę jako klucz i wartość
Z perspektywy czasu nie ma prawie żadnego powodu, aby spróbować użyć filtru i mapy jako jednej operacji. Jeśli ktokolwiek jest "nowy w RxJS" i widzi moje pytanie, nie bierz żadnej z tych odpowiedzi. Po prostu filtruj, a następnie mapuj. –