【发布时间】:2018-04-14 05:55:10
【问题描述】:
我正在寻找类似于Object.keys 的东西,但它适用于潜在的嵌套对象。它也不应该包括具有对象/数组值的键(它应该只包括具有直接字符串/数字/布尔值的键)。
示例 A
输入
{
"check_id":12345,
"check_name":"Name of HTTP check",
"check_type":"HTTP"
}
预期输出
[
"check_id",
"check_name",
"check_type"
]
Object.keys 适用于这样的扁平案例,但不适用于嵌套案例:
示例 B
输入
{
"check_id":12345,
"check_name":"Name of HTTP check",
"check_type":"HTTP",
"tags":[
"example_tag"
],
"check_params":{
"basic_auth":false,
"params":[
"size"
],
"encryption": {
"enabled": true,
}
}
}
预期输出
[
"check_id",
"check_name",
"check_type",
"check_params.basic_auth",
"check_params.encryption.enabled"
]
请注意,这不包括 tags、check_params、check_params.params 或 check_params.encryption,因为这些值是数组/对象。
问题
有没有这样的图书馆?您将如何实现它以便它可以处理任何对象,无论是大的、嵌套的还是小的?
【问题讨论】:
-
请添加您尝试过的和无效的。
-
它也不应该包含具有对象/数组值的键 - 但在您的示例 B 中,
check_params被添加到列表中,即使它的值是对象。 -
@tymeJV
Expected output仅包含check_params.basic_auth和check_params.encryption.enabled(嵌套键),而不包含具有对象值的check_params本身。
标签: javascript arrays object recursion javascript-objects