通过对象方法访问数组内部的对象属性

时间:2019-01-06 14:01:41

标签: javascript arrays object

这可能是一个简单的解决方案,但我不知道是否可以使用此方法。之前以不同的方式提出了这个问题,但是我正在研究对象方法而不是函数,所以请耐心等待。

是否可以访问对象属性并通过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 :(得分:1)

您可以为此使用spread operator ...

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

console.log(
  Object.getOwnPropertyNames(...x)
);  

答案 1 :(得分:0)

这行不通,但是根据您所需的输出结构,您可以使用map转换每个数组元素

x.map(Object.getOwnPropertyNames)

将返回属性名称数组的数组。

答案 2 :(得分:0)

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()访问数组中的对象。

答案 3 :(得分:0)

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

x[0]是数组中的第一个对象,并且由于所有对象似乎都具有相同的键,因此在第一个对象上调用该函数将获得所需的结果。

注意::该解决方案假定数组中至少有一个对象,因此您可能需要先进行检查,然后再进行x[0],否则会出现错误。 / p>

示例:

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);

答案 4 :(得分:0)

如果对象数组包含具有不同属性的对象,则可以这样获得唯一属性名称的列表:

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);

如果数组为空,或者数组包含null或未定义,则不会崩溃。但是它确实假设x是一个数组,可以是空或其他。