【问题标题】:Get key names from map of objects从对象映射中获取键名
【发布时间】:2020-03-11 15:47:38
【问题描述】:

我有一个像这样的对象的动态地图:

let specs = {source1:[{key1:value2, key2:value2, key3:value3}, {key1:value4, key2:value5, key3:value6}]
             source2:[{key4:value7, key5:value8, key6:value9}, {key4:value10, key5:value11, key6:value12}]

键名(key1、key2 ...)各不相同。 我正在寻找一种方法来提取每个来源的键名。 我想要这样的输出:

source1_keys ={key1, key2, kye3}
source2_kyes = {key4, key5, key6}

【问题讨论】:

标签: javascript arrays object key


【解决方案1】:

您可以使用map() 并使用Object.keys 获取每个数组中第一个对象的所有值

注意: 下面的方法只会获取每个数组中第一个对象的键。

let specs = {source1:[{key1:'value2', key2:'value2', key3:'value3'}, {key1:'value4', key2:'value5', key3:'value6'}],
             source2:[{key4:'value7', key5:'value8', key6:'value9'}, {key4:'value10', key5:'value11', key6:'value12'}]};
             
const keys = Object.fromEntries(
                Object.entries(specs)
                   .map(([k, v]) => [k, Object.keys(v[0])])
             );
console.log(keys)

如果您想从数组的每个元素中获取所有唯一键,请使用以下方法

let specs = {source1:[{key1:'value2', key2:'value2', key3:'value3'}, {key1:'value4', extra1:'value5', key3:'value6'}],
             source2:[{key4:'value7', key5:'value8', key6:'value9'}, {key4:'value10', extra2:'value11', key6:'value12'}]};
             
const keys = Object.fromEntries(
                Object.entries(specs)
                   .map(([k, v]) => [k, [...new Set(v.flatMap(x => Object.keys(x)))]])
             );
console.log(keys)

【讨论】:

  • 完美。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多