Filter array of objects by object key

后端 未结 3 434
甜味超标
甜味超标 2021-01-07 05:46

I have an array of objects in Javascript:

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


        
相关标签:
3条回答
  • 2021-01-07 05:53

    Sorry - I don't have the rep. to comment yet but I believe it should be

    return el.employee === ename;  // No quotes around ename
    

    Otherwise the answer @Ben gives is perfect - it can be extended into a 'groupby' function if using underscore is out of the question a the project.

    0 讨论(0)
  • 2021-01-07 06:05
    var emps = {};  
    _.each(List, function(item){
       emps[item.employee] = emps[item.employee] || [];
       emps[item.employee].push(item);
    });
    

    or using groupBy

    var emps = _.groupBy(List, function(item){
       return item.employee;
    });
    

    console.log(emps); gives

    {
        "Jerry": [
            {
                "employee": "Jerry",
                "type": "seminar"
            }
        ],
        "Joe": [
            {
                "employee": "Joe",
                "type": "holiday"
            },
            {
                "employee": "Joe",
                "type": "shore leave"
            }
        ]
    }
    
    0 讨论(0)
  • 2021-01-07 06:06
    var joe = List.filter(function(el){
     return el.employee === "Joe"
    });
    
    var jerry = List.filter(function(el){
     return el.employee === "Jerry"
    });
    

    This uses Array.prototype.filter and will work in IE9 and up + all recent Chrome/Firefox/Safari/Opera releases.

    If you don't know the names in advance then you can create a map 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"
        });
       }
    

    }

    As a side note, Javascript convention is to only capitalize the first letter of a variable for constructors. So List should probably be list.

    0 讨论(0)
提交回复
热议问题