Skip to content Skip to sidebar Skip to footer

Get Unique Keys From Multiple Objects

If I have an array of objects like this: var mountains = [ { name: 'Kebnekaise', elevation: 2106 }, { name: 'Mount Ngauruhoe', elevation: 2291, comment: 'aka Mount Doom' }

Solution 1:

In ECMAScript 2015, it's really simple:

let mountains = [
  { name: 'Kebnekaise', elevation: 2106 },
  { name: 'Mount Ngauruhoe', elevation: 2291, comment: 'aka Mount Doom' }
];

let uniqueKeys = Object.keys(Object.assign({}, ...mountains));

Solution 2:

Using ES6, one could do

var unique = newSet([].concat.apply([],mountains.map(Object.keys)))

Without ES6, something like

var unique = [].concat.apply([],mountains.map(Object.keys)).filter(function(value,i,arr) {
    return arr.indexOf(value) === i;
});

Solution 3:

You could iterate over the array of objects and iterate over each element's keys with Object.keys(obj), adding them to a hash to avoid duplicates:

functiongetKeySet (data) {
  var keys = {};

  data.forEach(function (datum) {
    Object.keys(datum).forEach(function (key) {
      keys[key] = true;
    });
  });

  returnObject.keys(keys);
}

Alternately you could add all the keys to an array and filter out duplicates. Either way this will be O(nm) where n is the number of elements in the array and m is the average number of keys.

Post a Comment for "Get Unique Keys From Multiple Objects"