lodash javascript 匹配多个参数的重复数组

lodash javascript array of duplicates that match multiple parameters

我有一个数组,为简化起见,我们假设有名字、姓氏和年龄的人。我想为所有具有相同名字、相同姓氏和相同年龄的人创建一个新数组。例如我的起始数组:

[
  {id: 1, first: 'fred', last: 'smith', age: 21},
  {id: 2, first: 'fred', last: 'smith', age: 21},
  {id: 3, first: 'tom', last: 'smith', age: 21},
  {id: 4, first: 'fred', last: 'smith', age: 32}
]

我想要 return 匹配 first/last/age 的副本:

[
  {id: 1, first: 'fred', last: 'smith', age: 21},
  {id: 2, first: 'fred', last: 'smith', age: 21}
]

我正在努力 _.uniq 弄清楚如何做到这一点,我们将不胜感激。

您可以使用 _.groupBy() 对值进行分组,确保它按您确定为重复标准的值进行分组。然后,您可以 _.filter() 每个值按它们累积的数组的长度进行分组,然后 _.flatten() 它以获得最终数组。

var data = [
  {id: 1, first: 'fred', last: 'smith', age: 21},
  {id: 2, first: 'fred', last: 'smith', age: 21},
  {id: 3, first: 'tom', last: 'smith', age: 21},
  {id: 4, first: 'fred', last: 'smith', age: 32}
];

var result = _(data)
  .groupBy(i => _(i).pick('first', 'last', 'age').values().value())
  .filter(i => i.length > 1)
  .flatten()
  .value();

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.11.2/lodash.js"></script>