javascript - 如何从对象数组中获取键和子键?

标签 javascript arrays dictionary object

我有以下对象数组。

const array = [{
  field1: "val1",
  field2: "val2",
  field3: {
    field1: "val1",
    field2: "val2"
  }
},
{
  field1: "val1",
  field2: "val2",
  field3: {
    field1: "val1"
  }
}]

我需要低于输出
const output = [{
  key: "field1",
  subkeys: []
},
{
  key: "field2",
  subkeys: []
},
{
  key: "field3",
  subkeys: ["field1", "field2"]
}]

我可以使用这个获得顶级字段
const keys = array.map(x => Object.keys(x)[0]);

但无法访问内部的。

请帮助...谢谢!

最佳答案

您可以在顶层减少对象键数组,然后检查此键的值是否为对象 - 检索其嵌套键,否则只需保留空的子键数组

const array = [{
  field1: "val1",
  field2: "val2",
  field3: {
    field1: "val1",
    field2: "val2"
  }
},
{
  field1: "val1",
  field2: "val2",
  field3: {
    field1: "val1"
  }
}]

const result = array.map(item => {
  return Object.keys(item).reduce((acc, rec) => {
    if(typeof item[rec] === 'object') {
      return [...acc, {key: rec, subkeys: Object.keys(item[rec])}] 
    }
    return [...acc, {key: rec, subkeys: []}]
  }, [])
})

console.log(result)

关于javascript - 如何从对象数组中获取键和子键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61750169/

相关文章:

javascript - 如何知道 node-webkit 应用程序是否以管理员/提升权限运行?

html - ruby 解析问题

python - 消除python脚本中最后一个字符串后的文本

c - 为了安全起见,我应该始终动态分配数组吗?

c - 我在使用以下具有不同变量类型和指针的代码来查找贝塞尔函数时遇到问题

python - 嵌套字典中的多个键

python - 使用python仅计算文本文件中的每个单词一次

javascript - 正确传入结构(js)

javascript - 在 Tampermonkey 中模拟 mousedown、click、mouseup 序列?

javascript - Angular js 观察 session 存储