skipWhile
accepts
1
input stream,
a predicate
function
predicate
returns ✔ true
✔ false
for one value:
returns a new stream of filtered values
takeWhile
accepts
1
input stream,
a predicate
function
predicate
:
predicate
returns ✔ true
, the value is emittedreturns a new stream of filtered values
Can you fill in the blanks? Try to find solutions that use only one card. If you are stuck, try at least to solve them with a chain of several cards. Watch the solutions below when you are ready.
Here is a function:
It returns ✔ true
or ✘ false
. This means you can use this function as a predicate on filtering cards.
The six operations on this exercise are filtering operations. And all solutions are based on such a predicate.
Here is the most common filtering card:
This is how ❚ filter
works with a predicate:
✔ true
, the event can passSlicing is a sub-category of filtering. Cards from this sub-category take or skip everything while/until a certain condition is met. For example:
This is how ❚ takeWhile
operates:
✔ true
, the event can pass◉ complete
notification❚ skipWhile
is the counterpart of ❚ takeWhile
. Note that, with ❚ skipWhile
, the input stream and the output stream completes at the same time.
Note: ❚ take
is another slicing card (it returns a new stream of at most N values). But you can’t use ❚ take(2)
instead of ❚ takeWhile(predicate)
to solve this exercise: watch my take vs takeWhile video to see the difference.
Finally, you can filter an input stream by emitting zero or one event value. For example, an output stream can emit only the first or the last event value of an input stream. To emit only the last value that satisfies a predicate, you can chain ❚ filter(predicate)
and ❚ last()
.
In some reactive stream libraries (like RxJS), you can simply use ❚ first
and ❚ last
with an optional predicate:
This is how ❚ last
operates with one input stream and a predicate:
Freelance Developer Advocate. Motion graphics with code. JavaScript and Elm. cedricsoulas.com
Receive my latest news, product updates and programming visualizations. You can unsubscribe at any time.