簡體   English   中英

在角度6中遍歷JSON對象

[英]Iterate through JSON object in angular 6

我是Angular的新手,可能這是一個愚蠢的問題。 我正在嘗試獲取api響應並將其保存到數組中。 我的API響應如下所示:

[
    {
        "name1": {
            "name": "name1",
            "api": {
               //somedata
            },
            "t1p": {
               //somedata
            }
        }
    },
    {
        "name2": {
            "name": "name2",
            "api": {
                //somedata
                }
            },
            "t1p": {
                //somedata
            }
        }
    }
]

我從代碼中得到響應

var data = [];

makeRequest(): void {
      this.http
        .get(this.URL1)
        .subscribe((res: Response) => {
          this.data = res;
          console.log(this.data);
        }, err => console.log(err));
    }

現在,我想從每個JSON對象中獲取“名稱”值。 我嘗試這樣做:

var ids:string = [];

for(let result of this.data){
            ids.push(result.name);
            console.log("Added"+result.name);
          }

但是我無法達到同樣的目的。 誰能告訴我同樣的問題。

您可以使用.mapObject.keys()實現它

const result = data.map(item => Object.keys(item)[0]);

console.log(result);   // ['name1', 'name2']

如果要對您的http調用執行該方法。 您可以通過以下方式進行操作:

this.http
    .get(this.URL1)
    .pipe(map(res => res.map(item => Object.keys(item)[0])))
    .subscribe((res: Response) => {...});

嘗試這個 !

for(let i = 0; i < this.data.length; i++ )
{
   for(let key of this.data[i])
   {
      if(this.data[i][key].hasOwnProperty("name"))
         ids.push(this.data[i][key][name]);
   }
}

當您的對象位於另一個以鍵為名稱的對象內時。

makeRequest(): void {
      this.http
        .get(this.URL1)
        .pipe((response) => {
         response.map((re,index)=> re['name'+(index+1)]['name'])
        })
        .subscribe((res: Response) => {
          this.data = res;
          console.log(this.data);
        }, err => console.log(err));
    }

我通過查看您的響應API給出了解決方案。 現在在訂戶中,您將獲得唯一的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM