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