匹配多个参数的重复项的lodash javascript数组
我有一个数组,可以简化,比如说,有第一个、最后一个和年龄的人。我想创建一个新数组,其中包含所有名、姓和年龄相同的人。例如,我的起始阵列:匹配多个参数的重复项的lodash javascript数组,javascript,lodash,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:
[
{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}
]
我正在与q.uniq进行斗争,想知道如何做到这一点,非常感谢您提供的任何帮助。您可以使用
\uq.groupBy()
对值进行分组,确保它按您确定为复制标准的值进行分组。然后,您可以根据每个分组值累计的数组长度对其进行..filter()
处理,然后..flant()
处理以获得最终数组
var数据=[
{id:1,第一个:“弗雷德”,最后一个:“史密斯”,年龄:21},
{id:2,第一个:“弗雷德”,最后一个:“史密斯”,年龄:21},
{id:3,第一个是汤姆,最后一个是史密斯,年龄:21},
{id:4,第一个:“弗雷德”,最后一个:“史密斯”,年龄:32}
];
var结果=(数据)
.groupBy(i=>ui).pick('first','last','age').values().value())
.filter(i=>i.length>1)
.flatte()
.value();
document.write(“”+JSON.stringify(结果,0,4)+“”)代码>
会.reduce()
做你想做的事吗?将每个项目与前一个项目进行比较,如果它们匹配,则返回后一个项目?如果有2个FRED和2个TOM,会发生什么情况?你期望得到什么回报?@Felipe Skinner,如果有两个Fred具有相同的姓氏和年龄,他们应该被包括在内,如果有两个Tom具有相同的姓氏和年龄,他们也应该被包括在内,基本上所有的记录都符合这三个标准。感谢你向我介绍了pick
的多属性表单。