Javascript 可观测数据的滤波结果

Javascript 可观测数据的滤波结果,javascript,angular,typescript,rxjs,Javascript,Angular,Typescript,Rxjs,我有一个服务,它返回一个可观察的组织对象,我想根据我传递的organizationID过滤结果 目前我正在做类似的事情,但它会返回所有的值,而不是经过过滤的值 filteredOrganization(组织ID:编号){ 返回this.http.get(this.baseUrl+'/list').pipe( 地图(组织=>{ 返回组织。筛选器(组织=>{ organization.id==组织id; 返回{ id:organization.id, 名称:organization.name, };

我有一个服务,它返回一个可观察的组织对象,我想根据我传递的organizationID过滤结果

目前我正在做类似的事情,但它会返回所有的值,而不是经过过滤的值

filteredOrganization(组织ID:编号){
返回this.http.get(this.baseUrl+'/list').pipe(
地图(组织=>{
返回组织。筛选器(组织=>{
organization.id==组织id;
返回{
id:organization.id,
名称:organization.name,
};
});
}),
);
}
例如,服务回报 [{1:abc,2:def,3:pqr}]

我想要什么 我将1作为组织Id传递,并希望得到结果[{1:abc}]

我得到了什么
[{1:abc,2:def,3:pqr}]

您正在展示的示例不需要进行映射,因为输出格式与输入格式相同。你只需要做过滤

filteredOrganization(organizationId: number) {
    return this.http.get<Organization[]>(this.baseUrl + '/list').pipe(
        filter(organization => organization.id === organizationId))
});

filteredOrganization(组织ID:编号){
返回此.http.get(this.baseUrl+/list').pipe(
筛选器(organization=>organization.id===organizationId))
});

您展示的示例不需要进行映射,因为输出格式与输入格式相同。你只需要做过滤

filteredOrganization(organizationId: number) {
    return this.http.get<Organization[]>(this.baseUrl + '/list').pipe(
        filter(organization => organization.id === organizationId))
});

filteredOrganization(组织ID:编号){
返回此.http.get(this.baseUrl+/list').pipe(
筛选器(organization=>organization.id===organizationId))
});
看看这个:

过滤器(rxjs)期望返回一个布尔值,在本例中, 不需要将返回指定为对象

你已经在做地图了,只是在过滤

this.appService.get()
     .pipe(
        map(organizations => {
          return organizations.filter(x => x.id === organizationId);
        })
      )
      .subscribe(val => console.log(val));
看看这个:

过滤器(rxjs)期望返回一个布尔值,在本例中, 不需要将返回指定为对象

你已经在做地图了,只是在过滤

this.appService.get()
     .pipe(
        map(organizations => {
          return organizations.filter(x => x.id === organizationId);
        })
      )
      .subscribe(val => console.log(val));

管道
操作员内的
map
功能应首先按组织ID过滤结果,然后将过滤后的结果映射到所需格式,然后返回到流的订户:

filteredOrganization(organizationId: number) {
  return this.http.get < Organization[] > (this.baseUrl + '/list').pipe(
    map(organizations => {
      return organizations.filter((org) => org.id === organizationId).map((org) => {
        return { id: organization.id, name: organization.name};
      });
    }),
  );
}
filteredOrganization(组织ID:编号){
返回this.http.get(this.baseUrl+'/list').pipe(
地图(组织=>{
返回organizations.filter((组织)=>org.id==organizationId.map((组织)=>{
返回{id:organization.id,name:organization.name};
});
}),
);
}

您在
管道中的
映射
功能
操作员应首先按组织ID过滤结果,然后将过滤结果映射到所需格式,然后返回到流的订户:

filteredOrganization(organizationId: number) {
  return this.http.get < Organization[] > (this.baseUrl + '/list').pipe(
    map(organizations => {
      return organizations.filter((org) => org.id === organizationId).map((org) => {
        return { id: organization.id, name: organization.name};
      });
    }),
  );
}
filteredOrganization(组织ID:编号){
返回this.http.get(this.baseUrl+'/list').pipe(
地图(组织=>{
返回organizations.filter((组织)=>org.id==organizationId.map((组织)=>{
返回{id:organization.id,name:organization.name};
});
}),
);
}

filter()
要求返回一个布尔值,该布尔值确定结果中是否应包含元素。此行:
organization.id===organizationId是比较,而不是赋值。是否要使用单个
=
筛选器()
需要返回一个布尔值,该布尔值确定是否应将元素包括在结果中。此行:
organization.id===organizationId是比较,而不是赋值。您是否打算使用单个
=
?@Rishav您是否能够标记正确的答案,以便其他人可以从您的问题中学习?同意,这绝对是最正确的方法。这在rxjs 6+中有效吗?我认为您应该使用Piping您可以在代码中看到pipe。@Rishav您是否能够标记正确的答案以便其他人可以从您的问题中学习?同意,这绝对是最正确的方法。这在rxjs 6+中有效吗?我认为你应该使用管道。你可以在代码中看到管道。这是一个冗余的
map
。这是一个冗余的
map