我有以下对象数组。
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/