Angular 如何基于一个值过滤角度上的可观测阵列
我请求一个web服务并接收一个可观察的对象,然后循环它们来构建另一个对象数组,如下所示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
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
}
})
));
}