我将使用RXJS运算符过滤对象数组 filter
我有一系列像这样的对象:
{
id: string,
count: number
}
Run Code Online (Sandbox Code Playgroud)
我会得到的东西 count > 20
我试过了:
getVotes2(): Observable<Vote> {
return this._http.get<Vote>(url)
.pipe(
map( results => results ),
filter( result => result.count>20 )
);
}
Run Code Online (Sandbox Code Playgroud)
接下来,如果没有map,我将始终获得所有记录。
有任何想法吗?
---------正确的代码------------
getVotes2(): Observable<Vote[]> {
return this._http.get<Vote[]>(url)
.pipe(
map( results => results.filter( r => r.count < 20) )
)
}
Run Code Online (Sandbox Code Playgroud)
bry*_*n60 11
您对使用rx过滤器运算符感到困惑。
filter rx运算符与数组filter运算符不同。rx过滤器对流进行操作,并从流中排除满足条件的内容,数组过滤器操作符对数组进行操作,并根据条件从数组中删除项目。
您当前正在做的是根据数组本身的一些未定义的“ count”属性过滤流,因此您要说的是“如果undefined> 20,则让该项通过流”,以及其中一种javascript怪癖,未定义IS大于20。
您需要做的是:
getVotes2(): Observable<Vote[]> {
return this._http.get<Vote[]>(url)
.pipe(
map( results => results.filter(r => r.count > 20) )
);
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以使用rx Map在流中的项目上执行操作,并在项目上使用数组过滤器来过滤数组。
编辑:如前所述,键入还必须正确,以使打字稿知道您期望的是投票对象数组,而不是单个投票对象。
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |