I'm getting started with RxJs (using the v5 beta), but somehow I can't figure out how to work with distinctUntilChanged. The output from the code below if I run it in babel-node is
[ 'a', 1 ] { key: 'a', state: 1 } Next:  { value: 42 } Completed   That is not what I would expect. Why is only one entry passing distinctUntilChanged? I would expect the output to be
[ 'a', 1 ] [ 'a', 0 ] [ 'a', 1 ] { key: 'a', state: 1 } { key: 'a', state: 2 } { key: 'a', state: 0 } { key: 'a', state: 1 } Next:  { value: 42 } Next:  { value: 24 } Completed   Here's the code
import {Observable} from 'rxjs'  Observable.of(['a', 1], ['a', 1], ['a', 0], ['a', 1])   .distinctUntilChanged(x => x[1])   .subscribe(x => console.log(x))  Observable.of({key: 'a', state: 1}, {key: 'a', state: 2}, {key: 'a', state: 0}, {key: 'a', state: 1})   .distinctUntilChanged(x => x.state)   .subscribe(x => console.log(x))  Observable.of({value: 42}, {value: 42}, {value: 24}, {value: 24})   .distinctUntilChanged(x => x.value)   .subscribe(     function (x) {       console.log('Next: ', x)     },     function (err) {       console.log('Error: ' + err)     },     function () {       console.log('Completed')     }   )   The links in the v5 docs for these functions appear to be dead
------ edit -----
Some additional debugging:
Observable.of(['a', 1], ['a', 1], ['a', 0], ['a', 1])   .do(x => console.log('before', x))   .distinctUntilChanged(x => x[1])   .do(x => console.log('after', x))   .subscribe(x => console.log(x))   output:
before [ 'a', 1 ] after [ 'a', 1 ] [ 'a', 1 ] before [ 'a', 1 ] before [ 'a', 0 ] before [ 'a', 1 ] 
                scan((total, n) => total + n), // Get the average by dividing the sum by the total number. // received so var (which is 1 more than the zero-based index). map((sum, index) => sum / (index + 1)) )
A Pipeable Operator is a function that takes an Observable as its input and returns another Observable. It is a pure operation: the previous Observable stays unmodified. A Pipeable Operator is essentially a pure function which takes one Observable as input and generates another Observable as output.
I got an answer here. Basically the function signature changed from (key selector, comparator) to (comparator, key selector).
This is how the example is done in v5:
Observable.of(['a', 1], ['a', 1], ['a', 0], ['a', 1])   .distinctUntilChanged(null, x => x[1])   .subscribe(x => console.log(x)) 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With