gpt4 book ai didi

http - Angular2 使用 http.get 和一个不同的

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:25:26 26 4
gpt4 key购买 nike

我正在尝试了解有关 Http.Get 的更多信息。我正在使用一个 json 文件来模拟 HTTP 调用。通话结束后,我想将行限制为唯一状态。我知道有一个名为 distinct ( help on Rxjs distinct ) 的 Rxjs 命令。但是我不明白不同的语法。当我按原样运行这段代码时,我得到了一组状态。但是,当我添加 distinct 时,它仍然具有重复的州,例如德克萨斯州。

    public getStates(): Observable<IState[]> {
return this._http.get(this.stateUrl)
.map((res: Response) => <IState[]>res.json())
// distinct by state name
.distinct((x) => return x.state)
;
}

这是 IState 的接口(interface)

export interface IState {
id: number;
state: string;
city: string;
name: string;
}

试图只获取具有唯一状态的行。

我有关于 this Github project 的代码的 repo 协议(protocol)

最佳答案

在这种情况下,您有点混淆了 distinct 的含义!这个 distinct 是为了过滤来自你的 Observable 的响应,而不是它的内容!在这里,您试图“区分”(过滤)您的 json 对象,但不同的将过滤由 Observable“解析”的(多个)响应。因此,如果 observable 多次“解决”相同的响应,您将只收到一次,因为您的 .distinct。这意味着,如果 Observable 第一次返回一个 json(例如 [{0: a, 1:b, 2:c}])并且他第二次返回相同的 json 响应,那么您的“订阅者”将不会收到它两次,因为 .distinct 会“过滤”它,因此它不会被触发!

这里有更多详细信息:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/distinct.md

因此,您正在寻找的是如何“过滤”您的 json 中的重复结果。答案很简单:使用一个循环来检查它的属性/值或一些像 underscore 这样可能已经实现了这个方法的库。

关于http - Angular2 使用 http.get 和一个不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42566986/

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