gpt4 book ai didi

Rxjs6 - 过滤对象数组

转载 作者:行者123 更新时间:2023-12-01 22:22:25 27 4
gpt4 key购买 nike

我将使用 RXJS 运算符过滤对象数组filter

我有一系列像这样的对象:

    {
id: string,
count: number
}

我会得到计数> 20的对象

我尝试过:

  getVotes2(): Observable<Vote> {
return this._http.get<Vote>(url)
.pipe(
map( results => results ),
filter( result => result.count>20 )
);
}

接下来,没有map,我总是能获取所有记录。

有什么想法吗?

---------正确代码------------

getVotes2(): Observable<Vote[]> {
return this._http.get<Vote[]>(url)
.pipe(
map( results => results.filter( r => r.count < 20) )
)
}

最佳答案

您对 rx 过滤器运算符的使用感到困惑。

过滤器 rx 运算符与数组过滤器运算符不同。 rx 过滤器对流进行操作,并从流中排除满足条件的内容,数组过滤器操作符对数组进行操作,并根据条件从数组中删除项目。

您当前正在做的是根据数组本身的某些未定义的“count”属性过滤流,因此您说“如果未定义> 20,则不要让该项目通过流”,并且一个在 javascript 的怪癖中,尽管比较无效,但 undefined 不大于 20。

您需要做的是:

getVotes2(): Observable<Vote[]> {
return this._http.get<Vote[]>(url)
.pipe(
map( results => results.filter(r => r.count > 20) )
);
}

这样,你就可以使用rx Map对流中的item进行操作,并在item上使用数组过滤器来过滤数组。

编辑:正如所指出的,输入也需要正确,才能让 typescript 知道您需要一组投票对象而不是单个投票对象。

关于Rxjs6 - 过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51898005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com