Using rxjs operator is it possible to get second last value Using rxjs operator is it possible to get second last value typescript typescript

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 last n emitted values before completion

  • take will take the first n 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);