按对象键过滤对象数组

rpa*_*bon 4 javascript arrays underscore.js

我有一个 Javascript 对象数组:

var List = [
            {
                employee:'Joe',
                type:'holiday',
            },
            {
                employee:'Jerry',
                type:'seminar',

            },
            {
                employee:'Joe',
                type:'shore leave',
            }
           ];
Run Code Online (Sandbox Code Playgroud)

我想获得两个新的对象数组;一个用于关键员工“Joe”,另一个用于关键员工“Jerry”。对象应保留相同的键/值对。

我一直在尝试使用 underscore.js 找到解决方案,但它变得太复杂了。关于如何实现这一目标有什么想法吗?

Ben*_*ick 6

var joe = List.filter(function(el){
 return el.employee === "Joe"
});

var jerry = List.filter(function(el){
 return el.employee === "Jerry"
});
Run Code Online (Sandbox Code Playgroud)

它使用Array.prototype.filter并且适用于 IE9 及更高版本 + 所有最新的 Chrome/Firefox/Safari/Opera 版本。

如果您事先不知道名称,则可以创建一个映射 var names = {};

for(var i =0; i<List.length; i++){
  var ename = List[i].employee;
  if(typeof names[ename] === "undefined"){
     names[ename] = List.filter(function(el){
     return el.employee === "ename"
    });
   }
Run Code Online (Sandbox Code Playgroud)

}

附带说明一下,Javascript 约定是仅将构造函数的变量的第一个字母大写。所以列表可能应该是列表。