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

时间:2016-05-04 15:37:53

标签: javascript lodash

我有一个数组,简化让我们说第一个,最后一个和年龄的人。我想创建一个新的数组,其中所有人具有相同的名字,相同的姓氏和相同的年龄。例如我的起始数组:

[
  {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}
]

我想返回与first / last / age匹配的重复项:

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

我正在努力与_.uniq争取如何做到这一点,感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用_.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>
LoginComponent