Angular 以角度从可观察阵列中移除多个元素

Angular 以角度从可观察阵列中移除多个元素,angular,rxjs,Angular,Rxjs,大家好 我对angular和rxjs很陌生。我有两个可观测阵列,其中一个“A”只有另一个可观测阵列“B”的子集。我需要从“B”中删除“A”中的元素。我如何做到这一点 您可以通过编写JS来迭代数组,但如果您使用lodash的差分方法,这将非常容易。在这里你可以找到它 通常,在Angular2+中,您应该取消OnDestroy中所有观察员的订阅,它可能如下所示: ngOnDestroy() { this.subscribers.forEach(item => item.unsubs

大家好


我对angular和rxjs很陌生。我有两个可观测阵列,其中一个“A”只有另一个可观测阵列“B”的子集。我需要从“B”中删除“A”中的元素。我如何做到这一点

您可以通过编写JS来迭代数组,但如果您使用lodash的差分方法,这将非常容易。在这里你可以找到它

通常,在Angular2+中,您应该取消OnDestroy中所有观察员的订阅,它可能如下所示:

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

订阅服务器是一个数组,应将其替换为A或B。

是否已从数组A和B中检索到所有元素,然后删除订阅?在本例中,它们是简单数组。。会有帮助的。。
但是,如果订阅处于活动状态且正在运行,则在subset的订阅处理程序中,需要手动检查获取的项目是否已存在于第二个数组中,然后从第二个数组中删除该项目。因为您假设它是一个子集,所以只需要执行删除操作。如果要加入重复删除,则需要添加到第二个阵列(如果不存在)。确保您有一个标识值来比较一个对象和另一个对象。

在这里,您可以找到有关stackoverflow上应该询问什么的一些信息。您的问题不包含任何关于您尝试过的内容以及您遇到的问题。@Deshani Gunawardana您需要任何具体帮助吗?
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)