Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配多个参数的重复项的lodash javascript数组_Javascript_Lodash - Fatal编程技术网

匹配多个参数的重复项的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
的多属性表单。