【发布时间】:2016-11-22 04:44:44
【问题描述】:
我正在查询 API 并尝试从它返回的数组中获取特定元素。
我查询 API 并返回 JSON 响应。我通过 .map 调用将响应发送到将响应中的每个对象映射到 T 的函数。
getOne(num: number): Observable<T> {
let t$ = this.http
.get(`${this.API_URL}?${this.getParams()}`)
.map(mapToTypeT)
.filter(x => Number.parseInt(x.rn) === num)
return t$;
}
我想调用 filter 来查找 rn 值与 num 参数匹配的一个元素。我知道这是不对的,因为我收到了两个错误:
Property 'rn' does not exist on type 'T[]'
Type 'T[]' is not assignable to type 'T'
有没有办法可以进入 T[ ] 数组来检查每个元素的属性,然后返回与给定谓词匹配的元素?就目前而言,我正在使用 T 的 Observable 数组,但我想返回一个只有 one T 的 Observable。
其他两个函数供参考:
function mapToTypeT(response:Response): T[]{
return response.json().map(t => toT(t))
}
function toT(r:any): T{
let t = <T>({
staId: r.staId,
stpId: r.stpId,
staNm: r.staNm,
stpDe: r.stpDe,
rn: r.rn,
});
return t;
}
【问题讨论】:
标签: javascript angularjs arrays reactivex