tengo el flujo:
this.unselectedObjectsIds$ = this.selectedObjectsIds$.pipe(pairwise()); Donde está this.selectedObjectsIds$
[ ['131086', '131089', '131090', '131638', '132139'], ['131086', '131089'] ]Intento aplicar este filtro a la transmisión:
this.unselectedObjectsIds$ = this.selectedObjectsIds$.pipe( pairwise(), map((a) => a[0].filter(x => !a[1].includes(x)) );El filtro es:
a[0].filter(x => !a[1].includes(x));Pero no funciona para mí.
pairwise está esperando el siguiente valor
Porque solo tiene un valor: es una matriz: [['131086', '131089', '131090', '131638', '132139'], ['131086', '131089']]
si selectedObjectsIds$ es BehaviorSubject por ejemplo
necesita enviar un nuevo valor selectedObjectsIds$.next([]) y su código se emparejará como
[[['131086', '131089', '131090', '131638', '132139'], ['131086', '131089']], []]Intentaré adivinar qué vas a tener en SALIDA:
¿Es ["131090", "131638", "132139"] ?
en caso afirmativo, utilice el siguiente fragmento
import { map, pairwise, take, tap } from 'rxjs/operators'; import { BehaviorSubject, interval, of } from 'rxjs'; const selectedObjectsIds$ = new BehaviorSubject([ ['131086', '131089', '131090', '131638', '132139'], ['131086', '131089'], ]); const unselectedObjectsIds$ = selectedObjectsIds$.pipe( tap((data) => { console.log(data); }), map(([arr1, arr2]) => { console.log(arr1); console.log(arr2); return arr1.filter((x) => !arr2.find((i) => i === x)); }) ); unselectedObjectsIds$.subscribe((data) => console.log(data));demostración: https://stackblitz.com/edit/typescript-i4nazm?file=index.ts