/ / eliminar múltiples elementos de una matriz observable en angular - angular, rxjs

elimina múltiples elementos de una matriz observable en angular - angular, rxjs


Hola a todos,

Soy bastante nuevo para angular y rxjs. Tengo dos matrices aptas para el cual una de ellas "A" tiene solo un subconjunto de la otra matriz observable "B". Necesito eliminar elementos de "A" de "B". ¿Cómo logro eso?

Respuestas

0 para la respuesta № 1

Puede hacerlo escribiendo JS que iterará los arreglos pero sería fácil para usted si usa el método de diferencia de lodash. Aquí puede encontrarlo https://lodash.com/docs/4.17.5#difference


0 para la respuesta № 2

Normalmente, en Angular2 +, debe cancelar la suscripción de todos los observadores en OnDestroy, tal vez se vea así:

ngOnDestroy() {
this.subscribers.forEach(item => item.unsubscribe())
}

subscribers Es una matriz, deberías reemplazarla con A o B.


0 para la respuesta № 3

¿Ha recuperado todos los elementos de las matrices A y B y luego ha eliminado la suscripción? En este caso, son matrices simples. ¿Cómo puedo restar una matriz de otra? ayudará.. Sin embargo, si la suscripción está activa y en ejecución, entonces usted está en el controlador de suscripción para el subconjunto, debe verificar manualmente si el elemento ya existe en la 2ª matriz y luego eliminarla de la 2ª matriz. Dado que ha asumido que es un subconjunto, solo se requerirá la operación de eliminación. Si desea unirse con la eliminación de duplicados, debe agregar a la segunda matriz si no está presente allí. Asegúrese de tener un valor de identidad para comparar un objeto con otro.


0 para la respuesta № 4
import { map } from"rxjs/operators/map";
import { Observable } from "rxjs/Observable"
import { of } from "rxjs/observable/of";
import { forkJoin } from "rxjs/observable/forkJoin";

const arr1$ = of([1,2,3,4,5])
const arr2$ = of([1,2,3]);

const result$ = forkJoin(arr1$, arr2$).pipe(map(([arr1, arr2]) => arr1.filter(x => arr2.indexOf(x) === -1)));

result$.subscribe(console.log)