首页 > 解决方案 > 如何根据多个唯一值过滤对象数组?

问题描述

我有一个看起来像这样的数据集:

const data = [{
    "First Name" : "John"
    "Last Name": "Doe"
    "Cars Sold": 2
  },
  {
    "First Name" : "John"
    "Last Name": "Doe"
    "Cars Sold": 1
  },
  {
    "First Name" : "Jane"
    "Last Name": "Doe"
    "Cars Sold": 3
  }];

我将如何过滤它以获取对象中所有人的列表?即输出应该是对象中唯一人员的列表(名字和姓氏的组合)。

谢谢

标签: javascriptarraysfilter

解决方案


唯一的人,名字和姓氏之间用空格隔开:

const data = [{"First Name":"John", "Last Name":"Doe", "Cars Sold":2},{"First Name":"John", "Last Name":"Doe", "Cars Sold":1},{"First Name":"Jane", "Last Name":"Doe", "Cars Sold":3}];
const res = [...new Set(data.map(e => e["First Name"] + " " + e["Last Name"]))];
console.log(res);

ES5 语法:

var data = [{"First Name":"John", "Last Name":"Doe", "Cars Sold":2},{"First Name":"John", "Last Name":"Doe", "Cars Sold":1},{"First Name":"Jane", "Last Name":"Doe", "Cars Sold":3}];
var res = data.map(function(e) {
  return e["First Name"] + " " + e["Last Name"];
}).filter(function(e, i, a) {
  return a.indexOf(e) == i;
});
console.log(res);


推荐阅读