我有一组看起来像这样的对象:
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过滤那些人。
如何使用下划线功能进行过滤?
由于
答案 0 :(得分:1)
尝试:
var obj = {
Name: [
{
FirstName: "John",
LastName : "Smtih",
ClassID : 123
},
{
FirstName: "Jane",
LastName : "Doe",
ClassID : 321
},
{
FirstName: "John",
LastName : "Smtih",
ClassID : 321
}
]
};
obj.Name = _.uniq(obj.Name, function(item){
return [item.FirstName, item.LastName].join()
});
document.write("<pre>" + JSON.stringify(obj, null, 4) + "</pre>")
<script src="http://underscorejs.org/underscore.js"></script>
_.uniq是最简单的方法,指定一个唯一的字符串“FirstName,LastName”。
答案 1 :(得分:-1)
var uniqueCollection = _.uniq(array);
此示例仅适用于不适用于集合的数组。为了使您的集合独一无二,您需要在纯javascript中编写自定义逻辑.Underscore不提供该功能。