Using rxjs operator is it possible to get second last value
You can make use of the takeLast() and skipLast RxJS operator.
The takeLast()
operator allows you to
Emits only the last
count
values emitted by the source Observable.
while the skipLast()
operator
Skip the last
count
values emitted by the source Observable.
Now, we can combine both pipeable operators such that we will take the last 2 counts, and skip the last count.
import { range, from } from 'rxjs';import { takeLast, map, skipLast} from 'rxjs/operators';const source = from([1, 2, 3, 4, 5]);const example = source .pipe( map(val => val + 10), takeLast(2), skipLast(1) );example.subscribe(res => console.log(res));
Here is a demo.
You can use the pairwise operator: https://www.learnrxjs.io/operators/combination/pairwise.html
import { from } from 'rxjs';import { map,last } from 'rxjs/operators';//emit (1,2,3,4,5)const source = from([1, 2, 3, 4, 5]);//add 10 to each valueconst example = source.pipe(map(val => val + 10)).pipe(pairwise(),last());//output: 11,12,13,14,15const subscribe = example.subscribe(val => console.log(val[0]));
takeLast
take lastn
emitted values before completiontake
will take the firstn
number
import { from } from "rxjs";import { take, takeLast } from "rxjs/operators";const source = from([1,2,3,4,5]);source .pipe( takeLast(2), take(1) ) .subscribe(console.log);