簡體   English   中英

JSON-對象數組中的對象-如何使用JS解析循環?

[英]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.

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