我有一个数组,简化让我们说第一个,最后一个和年龄的人。我想创建一个新的数组,其中所有人具有相同的名字,相同的姓氏和相同的年龄。例如我的起始数组:
[
{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争取如何做到这一点,感谢任何帮助。
答案 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