【发布时间】:2020-05-04 19:11:39
【问题描述】:
我正在尝试创建一些脚本,该脚本将接受一个对象,然后返回该对象中所有键的列表,该列表适用于两级键。但是一旦键有另一个对象或者键是一个包含对象的数组,脚本就不再返回键。有没有一种简单的方法可以做到这一点,还是我必须手动遍历所有键并检查是否有另一个对象?下面是一个示例对象。就我而言,我不关心值,但我需要所有键:
object1 = {
DocId: "email_campaign::3ed76589-4063-49f6-a21e-9ca16981d102",
_id: "3ed76589-4063-49f6-a21e-9ca16981d102",
_type :"email_campaign",
end_date: "",
history: {
created_by: "",
created_on: "",
update_on: "",
updated_by: ""
},
librarys :[{id: 1, name : 'Lib 1'},{ id: 2, name: 'Lib 2'}],
metrics : {
first_email_sent: "",
last_email_send: "",
nbr_of_attachments_opened: 0,
nbr_of_bounces: 0,
nbr_of_email_opened: 0,
nbr_of_emails: 0,
nbr_of_unique_attachments_opened:0,
nbr_of_unique_email_opened: 0
},
start_date: "",
status: "Active",
subject: "Test 1 Subject",
summary: "",
tags: ['one', 'two'],
template_id: ""
};
【问题讨论】:
-
你能澄清一下吗? “适用于调平键”
-
你可能想发布你目前获取密钥的代码,但我猜你会想把它变成一个递归函数,当它发现另一个层次时,它可以调用自己。
-
所以如果我使用 lodash / underscore 和这个简单的代码让 myKeys = _.allKeys(obj) 我得到例如指标而不是指标下的键
-
在您的示例中,我看不到“密钥有另一个对象或密钥是一个包含对象的数组”。我看到 value 是一个对象的地方,而 value 是一个对象数组的地方,但这是不同的。
-
也许我互换了术语,但例如指标是对象中的一个键,并且有一堆嵌套键,或者库键具有另一个对象的数组,该对象有 2 个键
标签: javascript node.js