[英]JSON - object in array in object - how to parse through loop with JS?
如果我有此架構:
[{
"Id": 2,
"Prizes": [{
"Id": 5,
"Status": 0,
"ClaimCode": "PN0016CXC1WPM64P",
"User": {
"FirstName": "John",
"SecondName": "Doe",
},
"DrawId": 2,
"PrizeId": 22,
"Prize": null
}]
}]
如何在數組獎品(即主要JSON)中的對象User下獲得名字或任何值?
我已經試過了:
const response = JSON.parse(this.responseText);
response.Prizes[0].User.forEach(function(a) {
output += `<li>${a.FirstName}</li>`;
});
但是,如果錯誤未定義,我相信可以將其提取出來,但只需要正確的語法即可。 還是用for循環不能做到這一點?
首先,Response是一個數組,User是一個對象,這應該可以工作:
const response = JSON.parse(this.responseText);
response.map((resp) => {
resp.Prizes.map((prize) => {
output += `<li>${prize.User.FirstName}</li>`;
})
})
由於您有一個對象數組,並且在對象內部有一個值數組( Prizes
),因此可以使用嵌套的Array.forEach()
調用來獲取內部值,用字符串包裝它們,然后推入items
數組:
const response = [{"Id":2,"Prizes":[{"Id":5,"Status":0,"ClaimCode":"PN0016CXC1WPM64P","User":{"FirstName":"John","SecondName":"Doe"},"DrawId":2,"PrizeId":22,"Prize":null}]}]; const items = []; response.forEach((o) => o.Prizes.forEach((p) => items.push(`<li>${p.User.FirstName}</li>`) )); list.innerHTML = items.join('');
<ul id="list"></ul>
由於您具有多維數組,因此需要在數組內部使用Prizes
。
因此,首先,你可以結合所有Prizes
使用到一個reduce()
和Spread_syntax
然后使用后map()
與加入mehod獲得所需的結果。
DEMO
const response = [{"Id":2,"Prizes":[{"Id":5,"Status":0,"ClaimCode":"PN0016CXC1WPM64P","User":{"FirstName":"John","SecondName":"Doe"},"DrawId":2,"PrizeId":22,"Prize":null}]}]; let res = response.reduce((r,{Prizes}) =>[...r,...Prizes],[]).map(({User})=>`<li>${User.FirstName}</li>`).join(''); document.querySelector('ul').innerHTML =res ;
<ul></ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.