从对象数组中获取所有唯一的对象属性 [英] Get all unique object properties from array of objects

查看:72
本文介绍了从对象数组中获取所有唯一的对象属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个对象数组,例如

Let's imagine I have an array of objects e.g.

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

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

I want to get all the unique property names from this array of objects, so the result will be:

[firstName, lastName, car]

我该怎么做:

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

I can imagine that it's possible to do this with something like this:

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> 显示值.

I will have to make a table of multiple objects. Because each object can be a bit different I need unique property names. However I am going to do it in angularJS so it's kind of a bad option for me to once use loop to get property names for <th> and once again use loop with <tr ng-repeat></tr> to display values.

我想要的:

是否有一些选项可以在不迭代的情况下从对象数组中获取所有唯一属性名称?也许是一些我不知道的 lodash 或内置 JS 函数?

Is there some option to get all unique property names from an array of objects without iterating it? Maybe some lodash or build in JS function which I don't know?

推荐答案

仅使用的解决方案:

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

这篇关于从对象数组中获取所有唯一的对象属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆