我正在使用 fetch 来检索 json 文件。 json 文件返回对象列表。每个对象也有一个对象。我正在尝试控制台记录外部对象。下面是文件的内容。从下面的数据中,我试图记录这个列表 ['CNDNET','Acropolis','Other']。如果我使用 Object.keys(data),我会得到一个整数列表 [0,1,2]。谢谢。
[
{
"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"
]
}
]
}
}
]
答案 0 :(得分:1)
实际上在顶级 data
数组中包含三个对象。您可以使用 flatMap()
遍历这些,为每个返回 Object.keys()
。
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);
如我的评论中所述,直接在 Object.keys()
数组上调用 data
只会返回数组的整数索引。 ([0,1,2])
答案 1 :(得分:1)
您可以遍历数组并返回键并将其存储在变量中。稍后,使用 concat()
或 flat()
方法将二维数组转换为一维数组,如下图所示。
let result = arr.map((item) => {
return Object.keys(item)
})
console.log(result.flat())
console.log([].concat(...result))