Получить ключевые имена из карты объектов - PullRequest
0 голосов
/ 11 марта 2020

У меня есть динамическая c карта таких объектов:

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}

1 Ответ

2 голосов
/ 11 марта 2020

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...