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

Filtering an array of objects using underscor functions JS

本文关键字:对象 数组 过滤 JS underscor 函数 使用      更新时间:2023-09-26

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

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 = {
   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"。

 var uniqueCollection = _.uniq(array);

此示例仅适用于数组,不适用于集合。为了使你的集合独一无二,你需要用纯javascript编写自定义逻辑。下划线不提供该功能。