Получить ключи из массива объектов: Javascript - PullRequest
1 голос
/ 23 июня 2019

У меня есть такой сценарий, где мне нужно выбрать только ключи в массиве объектов. Структура объекта показана ниже. Я также попробовал подход, но это не похоже на работу. Может ли кто-нибудь помочь мне с этим.

var arr = [
        { firstName: "aaaaa", status: 0, visits: 155 },
        { firstName: "aabFaa", status: 0, visits: 155 },
        { firstName: "adaAAaaa", status: 10, visits: 1785 },
        { firstName: "aAaaaa", status: 50, visits: 175 },
        { firstName: "aaaaa", status: 670, visits: 155 },
      ]

console.log([...new Set(arr.map(item => Object.keys(item)))]); //  This does not work

Я хочу, чтобы вывод был просто ['firstName','status','visits']

Ответы [ 3 ]

5 голосов
/ 23 июня 2019

Object.keys сам возвращает массив, поэтому ваш map создает массив массивов.Вместо этого используйте flatMap:

console.log(Array.from(new Set(arr.flatMap(Object.keys))))

В качестве альтернативы, поскольку все объекты в вашем массиве имеют одинаковые ключи, вы можете просто взять ключи первого объекта:

console.log(Object.keys(arr[0]))

(это также делает очевидным, что код работает только с непустыми массивами)

1 голос
/ 23 июня 2019

Вы пытаетесь создать Set из двумерного массива ключей.Используйте flatMap, чтобы получить плоский массив ключей всех объектов в массиве

[...new Set(arr.flatMap(item => Object.keys(item)))]

Вот фрагмент:

const arr = [
      { firstName: "aaaaa", status: 0, visits: 155 },
      { firstName: "aabFaa", status: 0, visits: 155 },
      { firstName: "adaAAaaa", status: 10, visits: 1785 },
      { firstName: "aAaaaa", status: 50, visits: 175 },
      { firstName: "aaaaa", status: 670, visits: 155 },
    ];
    
const uniqueKeys = [...new Set(arr.flatMap(Object.keys))]

console.log(uniqueKeys)
0 голосов
/ 23 июня 2019

Object.keys(arr[0]), вероятно, самое короткое решение, при условии, что каждый объект в arr имеет одинаковые ключи:

var arr = [{
    firstName: "aaaaa",
    status: 0,
    visits: 155
  },
  {
    firstName: "aabFaa",
    status: 0,
    visits: 155
  },
  {
    firstName: "adaAAaaa",
    status: 10,
    visits: 1785
  },
  {
    firstName: "aAaaaa",
    status: 50,
    visits: 175
  },
  {
    firstName: "aaaaa",
    status: 670,
    visits: 155
  },
]

let keys = Object.keys(arr[0]);

console.log(keys);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...