JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.3/Rx.js"></script>

JavaScript

var Observable = Rx.Observable;

var swapFirstWithLast = array => {
	var x = array[0];
	array[0] = array[array.length-1];
	array[array.length-1] = x;
	return array;
}

var values$ = Observable.interval(1000); //.. 0 .. 1 .. 2 .. 3 .. 4 .. 5 ..

var index = 2;
var newIndex = 4;

var windowFrames$ = values$.filter((_,i) => i === index-1 || i === newIndex);

var swapValues$ = values$
	.window(windowFrames$)
	.switchMap((frame$, i) =>
		i === 1 ? // the frame index between index-1 and newIndex
			frame$.toArray().flatMap(x => Observable.from(swapFirstWithLast(x))) :
			frame$);
      
swapValues$.subscribe(console.log);