试图获得一个唯一的对象列表

Trying to get a unique list of objects

我有一个对象集合

var array = 
[
    {"category":"A", "categoryname":"somename", key: 1, description: "something"}, 
    {"category":"A", "categoryname":"somename", key: 1, description: "something"}, 
    {"category":"B", "categoryname": "somename", key: 1, description: "something"}
    {"category":"B", "categoryname": "somename", key: 3, description: "something"}
    {"category":"C", "categoryname": "somename", key: 2, description: "something"}
    {"category":"C", "categoryname": "somename", key: 2, description: "something"}
]

有 4 个值(类别、类别名称、键、描述),我需要遍历它并根据类别获取唯一的对象列表。但我想要 return 具有 2 个前置属性的唯一列表,而不仅仅是一个。如果我使用

_.uniq(_.pluck(array,"category"))

这给了我想要的东西,除了我需要类别名称和类别。这可能吗?

已经有几个关于同一用例的问题。

Plucking Multiple Properties

Removing duplicate objects with Underscore for Javascript

您可以使用 $.unique()Array.prototype.map()JSON.stringify()JSON.parse()

var array = [{
  "category": "A",
  "categoryname": "somename",
  key: 1,
  description: "something"
}, {
  "category": "A",
  "categoryname": "somename",
  key: 1,
  description: "something"
}, {
  "category": "B",
  "categoryname": "somename",
  key: 1,
  description: "something"
}, {
  "category": "B",
  "categoryname": "somename",
  key: 3,
  description: "something"
}, {
  "category": "C",
  "categoryname": "somename",
  key: 2,
  description: "something"
}, {
  "category": "C",
  "categoryname": "somename",
  key: 2,
  description: "something"
}];

var res = $.unique(array.map(function(el) {
  return JSON.stringify([el.category, el.categoryname])
})).map(JSON.parse);

console.log(res);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>