網站搜尋

typescript - 在 Angular 的服務中修改 API 回應


我正在嘗試修改 API 請求返回的響應。目前我得到的響應是

[
   {
       name: "Afghanistan"
   }, 
   {
       name: "Åland Islands"
   }
]

我想把它修改為:

[
   {
        name: "Afghanistan",
        name1: "Afghanistan",
        name2: "Afghanistan"
    },
    {
        name: "Åland Islands",
        name1: "Åland Islands",
        name2: "Åland Islands"
    }
]

我正在嘗試複製 name 欄位並在同一個物件中創建新欄位,例如:name1、name2。這裡有一個可以運行的專案 https://stackblitz.com/edit/angular-8bzcdp,有人可以幫忙嗎?

答案#1

你可以將你的方法更改為:

  getRecords() {
    return this.http.get('https://restcountries.eu/rest/v2/all').pipe(
      map((res: any[]) => {
        const data = res.map(obj => ({
          name: obj.name,
          name1: obj.name,
          name2: obj.name
        }));
        return data;
      })
    );
  }

在結果響應陣列(res[])上,我們根據你的標準將每個元素映射到一個 JSON 對象,並返回新創建的 JSON 對象。

答案#2

你可以在訂閱後修改你的回應

this.service.getRecords().subscribe(res => {
  console.log(res);
  console.log(res.reduce((a, c) => Object.assign(a, c), {}));
});

詳情請訪問更新的 StackBlitz 連結

https://stackblitz.com/edit/angular-nwwef1?file=src/app/app.component.ts