如何从Observable数组中删除多个元素而不订阅它

时间:2018-03-27 04:55:18

标签: angular rxjs

在我的angular 4应用程序中,我遇到了从包含自定义类型的可观察数组中删除少量元素的方案。这里我有另一个要删除的Observable元素数组。有没有办法从一个Observable数组中删除一个Observable数组的元素而不订阅它们。

例如,假设我有 allCustomers orderedCustomers 的可观察数组。

如何获得没有订购任何东西的客户。 (allCustomers - orderedCustomers =?)

感谢。

2 个答案:

答案 0 :(得分:1)

我认为combineLatest就是你想要的:

import {combineLatest} from 'rxjs/observable/combineLatest'; // import for rxjs 5+

// these are your existing Observables...
const allCustomers$: Observable<Customer[]>;
const orderedCustomers$: Observable <Customer[]>;

// this will be an Observable of customers with no order
const customersWithNoOrders$: Observable<Customer[]> =
  combineLatest(
    allCustomers$,
    orderedCustomers$,
    (allCustomers, orderedCustomers) => {
      return allCustomers.filter(customer => !orderedCustomers.includes(customer));
    }
  );

答案 1 :(得分:0)

你必须使用过滤管才能做到这一点。

此处提供更多信息:https://www.learnrxjs.io/operators/filtering/filter.html

const source = Observable.from([
        {
            id: 1,
            ordered: true,
        },
        {
            id: 2,
            ordered: false,
        },
                {
            id: 3,
            ordered: true,
        }
    ]);

source.pipe(filter(customer => customer.ordered === false)).subscribe(customerNotOrdered => {
    console.log(customerNotOrdered);
});