0
votes

Rxjs fusion de deux observables uniquement

J'utilise RXJS pour créer un système de recherche et de filtrage dans une application angulaire.

J'ai ce qui suit: p> xxx pré>

avec la fonction utilitaire code> être quelque chose comme: p> xxx pré>

mais cela me grosse l'un ou l'autre observable. Donc, ma question est la suivante: p>

Comment puis-je fusionner les deux observables et émettre que les valeurs communes aux deux tableaux? Où filtre parfois $ pourrait émettre un tableau de 30 éléments. Et parfois, recherchez $ pourraient émettre un tableau de 2 éléments seulement? P>

IE: P>

si Filtre $ code> Contient: p>

[{_id:'1', name:'jhon'},{_id:'4', name:'some random dude'}, {_id:'7', name:'bravo'}]


0 commentaires

3 Réponses :


0
votes

Quelque chose comme ça devrait fonctionner: xxx


0 commentaires

1
votes

the comparer fonction de DisponNUntilchanged opérateur est utilisé pour indiquer si l'émission précédente est différente de celle de l'émission actuelle.

Comme j'ai compris votre question, vous recherchez une intersection entre les recherche et filtre .

Premier, utilisez Combinelaest opérateur à être averti à chaque fois que recherche $ de Filtre $ EMITS.
Ensuite, vous pouvez utiliser quelque chose comme Lodash's intersectionwith pour obtenir L'intersection des tableaux.

Votre code devrait ressembler à ce que ceci: xxx

Vous pouvez vérifier le code d'exécution complet dans Cette Stackblitz


0 commentaires

0
votes

Vous pouvez réellement y parvenir avec JavaScript simple.

p>

const myData$ = combineLatest(this.search$.asObservable(), this.filters$.asObservable()).pipe(
  map(([filterArr, searcheArr]) => filterArr.filter(userFilter => searchArr.some(userSearch => userFilter._id == userSearch._id)))
)


0 commentaires