Javascript 使用下划线函数筛选对象数组

Javascript 使用下划线函数筛选对象数组,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有一个对象数组,看起来像: Object{ Name: Array[3] [0]: FirstName: John LastName : Smtih ClassID : 123 [1]: FirstName: Jane LastName : Doe ID : 321 [2]: FirstName: John LastName : Smtih ClassID : 456 } 我需要根据唯一性过滤掉数组,这样就不会有名字和姓氏相同的人,如果有两个相同的人,那

我有一个对象数组,看起来像:

Object{
Name: Array[3]
[0]: 
 FirstName: John
 LastName : Smtih
 ClassID  : 123
[1]: 
 FirstName: Jane
 LastName : Doe
 ID       : 321
[2]:
 FirstName: John
 LastName : Smtih
 ClassID  : 456
}
我需要根据唯一性过滤掉数组,这样就不会有名字和姓氏相同的人,如果有两个相同的人,那么用我选择的classId过滤这些相同的人

例如,如果列表中有两个John Smith,并且当前classId为123,那么我的最终结果应该如下所示

Object{
Name: Array[2]
0: 
 FirstName: John
 LastName : Smtih
 ClassID  : 123
1: 
 FirstName: Jane
 LastName : Doe
 ID       : 321

}
所以基本上,我需要检查一组对象,以确保两个人的名字和姓氏不相同,如果他们有相同的名字和姓氏,那么我需要用classID过滤这些人

如何使用下划线函数进行筛选

谢谢

试试:

var obj={
姓名:[
{ 
名字:“约翰”,
姓氏:“Smtih”,
类别:123
},
{ 
名字:“简”,
姓:“Doe”,
类别:321
},
{ 
名字:“约翰”,
姓氏:“Smtih”,
类别:321
}
]
};
obj.Name=uq.uniq(obj.Name,函数(项){
return[item.FirstName,item.LastName].join()
});
document.write(“+JSON.stringify(obj,null,4)+”)
 var uniqueCollection = _.uniq(array);

此示例仅适用于数组,不适用于集合。为了使您的集合具有唯一性,您需要用纯javascript编写自定义逻辑。下划线不提供这种功能。

我认为下划线的性能不会比两个嵌套循环更好。您可以让的一个父元素检查每个元素,如果某些元素具有相同的名称,则使用下划线进行筛选。。但是没有真正的帮助你有什么特别的问题?你被困在哪里?你一定在解决这个问题上花了些心思。我建议看一看哦,很抱歉没有提供我的解决方案,我尝试使用了u.filter,但它绝对是垃圾,所以我需要一些帮助。这只查看人们的
LastName
,而不是
FirstName
+
LastName
。另外,请解释一下它是如何工作的。这样更好。。。但仍然缺少解释。为什么OP要尝试这个?你试过了吗?想解释一下它是如何工作的吗?你知道collect是做什么的吗?这是来自官方文档的独特功能“生成阵列的免费复制版本”;您是否确实尝试将该解决方案应用于所讨论的阵列?它不起作用。基本上和以前一样。盲目地抄袭例子是没有帮助的。