[英]Get values from a nested array in JavaScript
鑒於這個數組,我從 XHR 請求中得到:
[
{
"dinnerID": "h1799-05-20a",
"date": "20 May 1799",
"note": "<note xmlns=\"http://www.tei-c.org/ns/1.0\"/>",
"diners": {
"name": [
[
{
"mentioned": null,
"slept": "no",
"cancelled": null,
"person": "Miss Caroline Fox"
}
],
[
{
"mentioned": null,
"slept": "no",
"cancelled": null,
"person": "Lady Lucy Anne FitzGerald"
}
],
[
{
"mentioned": null,
"slept": "no",
"cancelled": null,
"person": "Dr ??? Drew"
}
],
[
{
"mentioned": null,
"slept": "no",
"cancelled": null,
"person": "Lady Elizabeth Vassall-Fox"
}
],
[
{
"mentioned": null,
"slept": "no",
"cancelled": null,
"person": "Lord Richard Vassall-Fox"
}
]
]
}
}
{
"dinnerID": "h1799-05-21a",
"date": "21 May 1799",
}
]
我如何獲得姓名( person
)列表,並使用其他mentioend
、 slept
和cancelled
?
這個:
for (var dinner of result) {
let diners = dinner.diners.name.person.join(", ")
}
返回一個Uncaught TypeError: dinner.diners.name.person is undefined
錯誤Uncaught TypeError: dinner.diners.name.person is undefined
錯誤。 我想返回類似的東西
Miss Caroline Fox (slept)(mentioned)(cancelled), Lady Lucy Anne FitzGerald (slept)(mentioned)(cancelled) etc.
我附上了我的console.log(result)
的截圖。
如果我們簡化數據,我們會得到類似
{
"diners": {
"name": [
[
{
"mentioned": null,
"slept": "no",
"cancelled": null,
"person": "Miss Caroline Fox"
}
],
...
}
}
這里我們看到diners
是一個Object ,在name
鍵上保存一個數組。 由於每個diner
都是一個對象,在一個額外的數組中,我們還需要以該對象為目標。
要獲得欲望輸出,請使用類似的東西;
const result = {"dinnerID": "h1799-05-20a", "date": "20 May 1799", "note": "<note xmlns=\\"http://www.tei-c.org/ns/1.0\\"/>", "diners": {"name": [[{"mentioned": null, "slept": "no", "cancelled": null, "person": "Miss Caroline Fox"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Lucy Anne FitzGerald"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Dr ??? Drew"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Elizabeth Vassall-Fox"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lord Richard Vassall-Fox"} ] ] } }; const res = result.diners.name.map(diner => { let obj = diner[0]; return `${obj.person} (${obj.slept}) (${obj.mentioned}) (${obj.cancelled})`; }); console.log(res.join(' '));
Miss Caroline Fox (no) (null) (null) Lady Lucy Anne FitzGerald (no) (null) (null) Dr ??? Drew (no) (null) (null) Lady Elizabeth Vassall-Fox (no) (null) (null) Lord Richard Vassall-Fox (no) (null) (null)
dinner.diners.name
是一個二維對象數組。 您可以將其展平,然后通過它進行映射以獲取所有名稱。
result.forEach(dinner => {
let diners = dinner.diners.name.flat().map(d => d.person).join("");
console.log(diners);
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.