Angular 如何基于一个值过滤角度上的可观测阵列

Angular 如何基于一个值过滤角度上的可观测阵列,angular,filter,rxjs,observable,Angular,Filter,Rxjs,Observable,我请求一个web服务并接收一个可观察的对象,然后循环它们来构建另一个对象数组,如下所示 export interface Seller { email?:String; isOnline?:boolean; name?:String; } 角分量: sellers: Observable<Seller[]>; constructor(firestore: AngularFirestore) { this.sellers = firestore.collecti

我请求一个web服务并接收一个可观察的对象,然后循环它们来构建另一个对象数组,如下所示

export interface Seller {
  email?:String;
  isOnline?:boolean;
  name?:String;
}
角分量:

sellers: Observable<Seller[]>;

constructor(firestore: AngularFirestore) {
    this.sellers = firestore.collection('sellers').valueChanges();
 }

getSllers(){
    return this.sellers;
 }

在这里,我想过滤掉那些只有
isOnline
true的卖家。我的代码片段似乎不起作用。最好的方法是什么?

米克尔是对的。我想你的意思是:

return sellers
 // filter the array
 .filter(selller => seller.isOnline === true)
 // map the filtered array
 .map(seller => {
  return {
    name: seller.name,
    isOnline: seller.isOnline,
    email: seller.email,
  };
});

米克尔是对的。我想你的意思是:

return sellers
 // filter the array
 .filter(selller => seller.isOnline === true)
 // map the filtered array
 .map(seller => {
  return {
    name: seller.name,
    isOnline: seller.isOnline,
    email: seller.email,
  };
});
getSellerDetails(){
返回此.getslers()管道(
//仅筛选在线的卖家
映射(sellers=>sellers.filter(seller=>seller.isOnline==true)),
//将所有筛选的卖家映射到想要的界面
地图(卖家=>{
返回卖家地图(卖家=>{
返回{
名称:卖方名称,
isOnline:seller.isOnline,
电子邮件:seller.email
}
});
})
)
}
getSellerDetails(){
返回此.getslers()管道(
//仅筛选在线的卖家
映射(sellers=>sellers.filter(seller=>seller.isOnline==true)),
//将所有筛选的卖家映射到想要的界面
地图(卖家=>{
返回卖家地图(卖家=>{
返回{
名称:卖方名称,
isOnline:seller.isOnline,
电子邮件:seller.email
}
});
})
)
}
看起来您没有使用卖家筛选结果进行映射。 试试这个

看起来您没有使用卖家筛选结果进行映射。
试试这个

您的地图回调中有一个错误。您没有对sellers调用的
array.filter
方法返回的数组执行任何操作。您能给出一个答案吗-数组过滤器返回一个新数组,但不更改原始数组-@Eliseo你能给出答案吗?你的map回调有错误。你没有对sellers调用的
array.filter
方法返回的数组执行任何操作。你能给出一个答案吗?请是
sellers=sellers.filter(sellers=>sellers.isOnline==true)
-数组的筛选器返回一个新数组,但不更改原始数组-@Eliseo你能给出答案吗?
getSellerDetails() {
    return this.getSllers().pipe(
        map(sellers => 
         sellers
         .filter(seller => seller.isOnline)
         .map(seller => {
            return {
                name: seller.name,
                isOnline: seller.isOnline,
                email: seller.email
            }
        })
    )); 
 }