[英]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);
}
但是我無法達到同樣的目的。 誰能告訴我同樣的問題。
您可以使用.map
和Object.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.