在我的angular 4应用程序中,我遇到了从包含自定义类型的可观察数组中删除少量元素的方案。这里我有另一个要删除的Observable元素数组。有没有办法从一个Observable数组中删除一个Observable数组的元素而不订阅它们。
例如,假设我有 allCustomers 和 orderedCustomers 的可观察数组。
如何获得没有订购任何东西的客户。 (allCustomers - orderedCustomers =?)
感谢。
答案 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);
});