【发布时间】:2020-05-30 09:59:47
【问题描述】:
{
"groups": [
{
"name": "Event",
"groups": [
{
"name": "Service",
"subscriptions": [
{
"topic": "SERVICE_STATUS_PRESETS"
},
{
"topic": "AIRCRAFT_ACTIVATION",
},
{
"topic": "OUT_OF_SERVICE",
}
]
}
]
},
{
"name": "Enquiries",
"groups": [
{
"name": "Service-related",
"subscriptions": [
{
"topic": "PROMO_CODES_REQUESTS",
}
]
}
]
}
],
"subscriptions": [
{
"topic": "BANNERS",
},
{
"topic": "DOCUMENTS",
},
{
"topic": "USER",
}
]
}
好的,伙计们,我有这样的 JSON 结构,我需要的是:返回数组中的所有主题,在这个例子中它将是:
[“SERVICE_STATUS_PRESETS”、“AIRCRAFT_ACTIVATION”、“OUT_OF_SERVICE”、“PROMO_CODES_REQUESTS”、“BANNERS”、“DOCUMENTS”、“USER”]
我尝试这样的递归调用,虽然我只得到最后三个记录:
getRecursive() {
if (Array.isArray(data)) {
for (let i = 0; i < data.length; i++) {
if (data[i].subscriptions) {
return data[i].subscriptions.map((val: SubscriptionGroupDetails) => val.topic);
} else if (data[i].groups) {
return this.getAllTopics(data[i].groups);
}
}
}
if (data && data.groups) {
return this.getAllTopics(data.groups);
}
return data.subscriptions.map((val: SubscriptionGroupDetails) => val.topic);
}
【问题讨论】:
-
@Teemu:这看起来并不特别相关。
-
@ScottSauyet 也许不是,但在提供的示例中没有递归(至少很明显),也许链接帖子中的答案给出了一些想法。
标签: javascript arrays json object recursion