javascript - 过滤可观察对象的结果
我有一个服务,它返回一个组织对象的可观察对象,我想根据我传入的organizationID来过滤结果。
目前我正在做类似这样的事情,但它返回了所有值,而不是筛选后的值。
filteredOrganization(organizationId: number) {
return this.http.get < Organization[] > (this.baseUrl + '/list').pipe(
map(organizations => {
return organizations.filter(organization => {
organization.id === organizationId;
return {
id: organization.id,
name: organization.name,
};
});
}),
);
}
例如,服务返回 [{1: abc, 2: def, 3: pqr}]
我想传入1作为组织ID,并希望结果是[{1: abc}]
我得到的是 [{1: abc, 2: def, 3: pqr}]
答案#1
看看这个:
https://stackblitz.com/edit/angular-ivy-euxd7m?file=src/app/app.component.ts
filter (rxjs) 期望返回一个布尔值,在这种情况下,不需要将返回值指定为对象。
你已经在制作地图了,只是在进行过滤……
this.appService.get()
.pipe(
map(organizations => {
return organizations.filter(x => x.id === organizationId);
})
)
.subscribe(val => console.log(val));
答案#2
你展示的这个例子不需要做 map,因为输出格式和输入相同。你只需要做 filter。
filteredOrganization(organizationId: number) {
return this.http.get<Organization[]>(this.baseUrl + '/list').pipe(
filter(organization => organization.id === organizationId))
});
