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

标签 javascript angularjs arrays object lodash

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

 [{
    "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 函数?

最佳答案

仅使用的解决方案:

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 - 从对象数组中获取所有唯一的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39248687/

相关文章:

java - 使用自定义适配器将 XML 中的数据解析为列表

php - 是否可以将 PHP 函数的参数列表转换为数组?

javascript - 使用 jQuery 填充输入字段

javascript - 如何将文件类型从 Coldfusion 代码传输到 javascript 代码?

javascript - Scrapy只抓取前两页

javascript - 为什么重定向 404 错误会导致 js 文件返回 HTML?

javascript - AngularJs 未加载外部资源

javascript - 在 Javascript 中创建和引用对象数组

javascript - 使用 jest fake 计时器测试 redux-saga debounce

javascript - 在 AngularJS 中将字符串视为模板