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

综合技术 2019-01-12 阅读原文

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

[{
    "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中这样做,所以对于我来说,使用循环来获取

的属性名称是一个不错的选择.并再一次使用循环与

显示值.

我想要的是:

是否有一些选项可以从一个对象数组中获取所有唯一属性名称而无需迭代它?也许一些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

责编内容by:代码日志 【阅读原文】。感谢您的支持!

您可能感兴趣的

Lightweight tilt onClick / JS or CSS3 I am trying to create a function where a #div will TILT 15 degrees to the left on click, and then go back to ...
DOM详解 一、简介 DOM即(Document Object Model):文档对象模型, 用来将标记型文档封装成对象 ,并将标记型文档中的所有内容(标签、文本、属性等)都封装成对象。即标记型文档的一种解析方式。 ...
JavaScript中的“多继承” 首先 JavaScript 中 不存在多继承 ,并且也不推荐使用继承。如果你也这么认为的话,那笔者的观点也就写完啦 233333…. 如果还想回顾下 JavaScript 中“继承”的前世今生,以及对“多继承”的讨论,不妨慢慢看...
少侠,留步,图片预览术 少年,我看你骨骼精奇,是万中无一的武学奇才,我这有本《图片流》秘籍,见与你有缘,就送于你了。 图片流 本文所说的图片流就是读取本地图片,并在页面使用文件流的方式显示出来。 首先,我们简单说下文件上传的几种方式, 然后依次来实现它...
JS 中可以提升幸福度的小技巧 本文主要介绍一些JS中用到的小技巧,可以在日常Coding中提升幸福度,将不定期更新~ 1. 类型强制转换 1.1 string强制转换为数字 可以用 *1 来转化为数字(实际上是调用 .valueOf 方法) 然...