javascript – 从对象数组中获取所有唯一对象属性

让我们想象一下我有一系列对象,例如:

 [{
    "firstName": "John",
    "lastName": "Doe"
 }, {
    "firstName": "Anna",
    "car": true
 }, {
    "firstName": "Peter",
    "lastName": "Jones"
 }]

我想从这个对象数组中获取所有唯一的属性名称,因此结果将是:

[firstName, lastName, car]

我该怎么做:

我可以想象用这样的东西可以做到这一点:

function getPropertiesNames(obj){
  var arr = [];
  for(var name in obj) {
    if(arr.indexOf(name) != -1) arr.push(name);
  }
 return arr;
} 

为什么我需要它:

我将不得不制作一个包含多个对象的表格.因为每个对象可能有点不同,所以我需要唯一的属性名称.但是我要在angularJS中这样做,所以对于我来说,使用循环来获取< th>的属性名称是一个不错的选择.并再一次使用循环与< tr ng-repeat>< / tr>显示值.

我想要的是:

是否有一些选项可以从一个对象数组中获取所有唯一属性名称而无需迭代它?也许一些lodash或构建JS功能,我不知道?

最佳答案
仅使用的解决方案:

> Object.assign
> Object.keys
> Array.prototype.reduce

var data = [{
  "firstName": "John",
  "lastName": "Doe"
}, {
  "firstName": "Anna",
  "car": true
}, {
  "firstName": "Peter",
  "lastName": "Jones"
}];

var uniqueKeys = Object.keys(data.reduce(function(result, obj) {
  return Object.assign(result, obj);
}, {}))

console.log(uniqueKeys);

转载注明原文:javascript – 从对象数组中获取所有唯一对象属性 - 代码日志