首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子对象的对象列表中检索外键

从子对象的对象列表中检索外键
EN

Stack Overflow用户
提问于 2021-01-18 20:06:42
回答 2查看 40关注 0票数 0

我正在使用fetch来检索一个json文件。json文件返回一个对象列表。每个对象也有一个对象。我正在尝试对外部对象进行控制台日志。以下是该文件的内容。从下面的数据中,我尝试记录这个列表'CNDNET','Acropolis','Other‘。如果我使用Object.keys(data),我会得到一个整数0,1,2的列表。谢谢。

代码语言:javascript
复制
[
   {
      "CNDNET":{
         "application":[
            {
               "Elastic":[
                  "Missing Data",
                  "No Data/Data Feed Down",
                  "Content/Feature Request",
                  "Access Issue"
               ]
            },
            {
               "Kibana":[
                  "Website Access Issue",
                  "Access Issue",
                  "Site Down"
               ]
            },
            {
               "Logstash":[
                  "Missing Data",
                  "No Data/Data Feed Down",
                  "Content/Feature Request",
                  "Access Issue"
               ]
            },
            {
               "Kafka":[
                  "Missing Data",
                  "No Data/Data Feed Down",
                  "Content/Feature Request",
                  "Access Issue"
               ]
            },
            {
               "Phoenix":[
                  "Missing Data",
                  "No Data/Data Feed Down",
                  "Content/Feature Request",
                  "Access Issue"
               ]
            },
            {
               "Outlook":[
                  "Access Issue"
               ]
            },
            {
               "Domain Account":[
                  "Access Issue"
               ]
            },
            {
               "Token":[
                  "Access Issue"
               ]
            },
            {
               "Software":[
                  "Authenticate",
                  "Firefox",
                  "Swift"
               ]
            },
            {
               "Hardware":[
                  "Monitor",
                  "Printer"
               ]
            }
         ]
      }
   },
   {
      "Acropolis":{
         "application":[
            {
               "ACT":[
                  "Missing Data",
                  "No Data/Data Feed Down",
                  "Content/Feature Request",
                  "Access Issue"
               ]
            },
            {
               "ARTEMIS":[
                  "Missing Data",
                  "No Data/Data Feed Down",
                  "Content/Feature Request",
                  "Access Issue"
               ]
            }
         ]
      }
   },
   {
      "Other":{
         "application":[
            {
               "CMIS":[
                  "Website Access Issue",
                  "Other",
                  "Access Issue"
               ]
            },
            {
               "SharePoint":[
                  "Access Issue",
                  "Other"
               ]
            },
            {
               "GTMS":[
                  "Access Issue",
                  "Other"
               ]
            },
            {
               "Other":[
                  "Other"
               ]
            }
         ]
      }
   }
]
EN

回答 2

Stack Overflow用户

发布于 2021-01-18 20:26:44

实际上,顶级data数组中包含三个对象。您可以使用flatMap()遍历这些元素,返回每个元素的Object.keys()

代码语言:javascript
复制
const data = [{ "CNDNET": { "application": [{ "Elastic": ["Missing Data", "No Data/Data Feed Down", "Content/Feature Request", "Access Issue"] }, { "Kibana": ["Website Access Issue", "Access Issue", "Site Down"] }, { "Logstash": ["Missing Data", "No Data/Data Feed Down", "Content/Feature Request", "Access Issue"] }, { "Kafka": ["Missing Data", "No Data/Data Feed Down", "Content/Feature Request", "Access Issue"] }, { "Phoenix": ["Missing Data", "No Data/Data Feed Down", "Content/Feature Request", "Access Issue"] }, { "Outlook": ["Access Issue"] }, { "Domain Account": ["Access Issue"] }, { "Token": ["Access Issue"] }, { "Software": ["Authenticate", "Firefox", "Swift"] }, { "Hardware": ["Monitor", "Printer"] }] } }, { "Acropolis": { "application": [{ "ACT": ["Missing Data", "No Data/Data Feed Down", "Content/Feature Request", "Access Issue"] }, { "ARTEMIS": ["Missing Data", "No Data/Data Feed Down", "Content/Feature Request", "Access Issue"] }] } }, { "Other": { "application": [{ "CMIS": ["Website Access Issue", "Other", "Access Issue"] }, { "SharePoint": ["Access Issue", "Other"] }, { "GTMS": ["Access Issue", "Other"] }, { "Other": ["Other"] }] } }]

const dataKeys = data.flatMap(o => Object.keys(o));

console.log(dataKeys);

正如我在评论中提到的,直接在data数组上调用Object.keys()只返回数组的整数索引。(0,1,2)

票数 1
EN

Stack Overflow用户

发布于 2021-01-18 20:37:49

您可以遍历数组,返回键并将其存储在变量中。稍后使用concat()flat()方法将2D数组转换为1D数组,示例如下所示。

代码语言:javascript
复制
let result = arr.map((item) => {
  return Object.keys(item)
})

console.log(result.flat())
console.log([].concat(...result))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65774217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档