Доступ к свойствам объекта внутри массива через метод объекта - PullRequest
0 голосов
/ 06 января 2019

Это может быть простое решение, но я не могу понять, могу ли я использовать этот метод или нет. Этот вопрос задавался ранее по-разному, но я смотрю через методы объекта, а не функции, так что терпите меня, пожалуйста.

Возможно ли получить доступ к свойствам объектов и вернуть их в виде массива через Object.getOwnPropertyNames(object)?

Например, этот метод работает нормально с переменной ниже без массива.

var y = {
  firstName: "John",
  lastName: "Doe",
  eyeColor: "Black",
  age: 50
};
console.log(
  Object.getOwnPropertyNames(y)
);
Returns 
(4) ["firstName", "lastName", "eyeColor", "age"]

можем ли мы использовать тот же метод для доступа к свойствам объекта внутри массива?

var x = [{
  firstName: "John",
  lastName: "Doe",
  eyeColor: "Black",
  age: 50
}, {
  firstName: "Marry",
  lastName: "Smith",
  eyeColor: "Brown",
  age: 45
}];

Ответы [ 5 ]

0 голосов
/ 06 января 2019

Если массив объектов содержит объекты с различными свойствами, вы можете получить список уникальных имен свойств следующим образом:

var x = [{
  firstName: "John",
  lastName: "Doe",
  eyeColor: "Black"
}, {
  firstName: "Marry",
  lastName: "Smith",
  age: 45
}];

var arrayOfArrays = x.filter(obj => obj).map(Object.getOwnPropertyNames)
var array = [].concat.apply([], arrayOfArrays);
var uniqueProperties = [...new Set(array)]

console.log(uniqueProperties);

Это не приведет к сбою, если массив пуст или массив содержит ноль или неопределенное значение. Но он предполагает, что x является массивом, пустым или нет.

0 голосов
/ 06 января 2019
var propNames = Object.getOwnPropertyNames(x[0]);

x[0] - первый объект в массиве, и, поскольку все объекты, похоже, имеют одинаковые ключи, вызов функции для первого объекта даст вам желаемый результат.

Примечание: В этом решении предполагается, что в массиве есть хотя бы один объект, поэтому вы можете сначала проверить это перед выполнением x[0], иначе вы получите ошибку.

Пример:

var x = [{firstName: "John", lastName : "Doe", eyeColor : "Black", age : 50}, {firstName: "Marry", lastName : "Smith", eyeColor : "Brown", age : 45}];

var propNames = Object.getOwnPropertyNames(x[0]);

console.log(propNames);
0 голосов
/ 06 января 2019

Это не будет работать, но в зависимости от желаемой структуры вывода, вы можете использовать map для преобразования каждого элемента массива

x.map(Object.getOwnPropertyNames)

вернет массив массивов имен свойств.

0 голосов
/ 06 января 2019
var x = [{firstName: "John", lastName : "Doe", eyeColor : "Black", age : 50}, {firstName: "Marry", lastName : "Smith", eyeColor : "Brown", age : 45}];

x.map(y => console.log(Object.getOwnPropertyNames(y)))

Вы можете получить доступ к объектам в массиве с помощью map ().

0 голосов
/ 06 января 2019

Вы можете использовать оператор распространения ... для этого:

var x = [{
  firstName: "John",
  lastName: "Doe",
  eyeColor: "Black",
  age: 50
}, {
  firstName: "Marry",
  lastName: "Smith",
  eyeColor: "Brown",
  age: 45
}];

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