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

翻譯自:https://stackoverflow.com/questions/39248687/get-all-unique-object-properties-from-array-of-objects