如何使用underscore.js创建一个组

时间:2018-05-15 14:14:41

标签: javascript arrays underscore.js

{
    "Name": "User1",        
    "SlotStartDate": "05/16/2018",
    "SlotStartTime": "9:20AM"        
},
{
    "Name": "User1",   
    "SlotStartDate": "05/16/2018",
    "SlotStartTime": "10:20AM"
},
{
    "Name": "User1",        
    "SlotStartDate": "05/17/2018",
    "SlotStartTime": "9:20AM"        
},
{
    "Name": "User1",        
    "SlotStartDate": "05/17/2018",
    "SlotStartTime": "10:20AM"        
},
{
    "Name": "User2",
    "SlotStartDate": "05/16/2018",
    "SlotStartTime": "8:45AM"
},
{
    "Name": "User2",
    "SlotStartDate": "05/16/2018",
    "SlotStartTime": "9:25AM"
}
{
    "Name": "User2",
    "SlotStartDate": "05/17/2018",
    "SlotStartTime": "8:45AM"
},
{
    "Name": "User2",
    "SlotStartDate": "05/17/2018",
    "SlotStartTime": "9:25AM"
}

如何使用underscore.js对数据进行分组并以下列方式返回数组:

按用户和日期分组。

User1
- "05/16/2018"
    - "9:20AM"
    - "10:20AM"
- "05/17/2018"
    - "9:20AM"
    - "10:20AM"     
User2
- "05/16/2018"
    - "8:45AM"
    - "9:25AM"
- "05/17/2018"
    - "8:45AM"
    - "9:25AM"          

我尝试过以下代码的组合:

var createGroups = _.groupBy(response2, function(value){
    return  value.Name + '#' + value.SlotStartDate  
});

var groupedData = _.map(createGroups,function(createGroup){
    return {                            
        slottimes: _.pluck(createGroup,'SlotStartTime')
    }
});

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

var groupedData = _.mapObject(_.groupBy(data, 'Name'), (user) => {
  return _.mapObject(_.groupBy(user, 'SlotStartDate'), (date) => {
    return _.pluck(date, 'SlotStartTime');
  });
});

jsfiddle link