映射特定对象数组类型的数据数组

时间:2019-04-09 10:58:08

标签: angular rxjs

也许是一个简单的问题,但我找不到为此的示例。

这是我的HttpClient呼叫

getItems(dataSourceUrl: string, bindKey: string, bindValue: string): Observable<SelectItem[]> {
    return this.httpClient.get<Array<any>>(dataSourceUrl);
}

我想基于bindKeybindValue将列表结果映射到SelectItem []。我该怎么办?

我尝试过这样的事情

return this.httpClient.get<Array<any>>(dataSourceUrl).pipe(map(x=> { return { label: data.bindKey, value: data.bindValue } }));

界面

export interface SelectItem {
    label: string;
    value: any;
}

两种不同的api响应示例

1。

{key:'Istanbul', value: 'Test' }
{key:'London', value: 'Test' }

bindKey将是key bindValue将是value

2。

{name:'Istanbul', id: 'Test' }
{name:'Istanbul', id: 'Test' }

bindKey将是id bindValue将是name

1 个答案:

答案 0 :(得分:1)

尝试

getItems(dataSourceUrl: string, bindKey: string, bindValue: string): Observable<SelectItem[]> {
     return this.httpClient.get<SelectItem[]>(dataSourceUrl)
           .pipe(map(x=> this.transformValue(bindKey,bindValue,x)));
}

transformValue(bindKey,bindValue,response):SelectItem[]{
    const newResponse = [];
    response.forEach(data => {
        newResponse.push({
            label: data[bindKey],
            value: data[bindValue]
        })
    })
    return newResponse;
}