使用undercor函数JS过滤对象数组

时间:2015-06-19 20:53:09

标签: 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
}

我需要根据唯一性过滤掉数组,所以没有相同名字和姓氏的人,如果有两个相同的人,那么用我选择的classId过滤那些相同的人。

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

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

}

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

如何使用下划线功能进行过滤?

由于

2 个答案:

答案 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不提供该功能。