由 underscore.js 嵌套 json

nested json by underscore.js

我找到了这些相关帖子,但无法解决我的问题

我想分组如下:

喜欢 StartDate ---> FunctionID--> STartTime

这是我的查询结果

和 json 结果如下:

[{"Act_Qty":0,"FunctionID":268,"ResDesc":"Anniversary Party","StartTime_EndTime":"04:00:00 AM - 04:30:00 AM"},
[{"Act_Qty":0,"FunctionID":268,"ResDesc":"Anniversary Party","StartTime_EndTime":"04:00:00 AM - 04:30:00 AM"}]

对于嵌套 json 分组我尝试了以下不同的查询:

var result = _.chain(jsonData)
.groupBy('StartDate')
.mapObject( StartDate => _.groupBy(StartDate, 'FunctionID'))
.value();


var result = _.chain(jsonData)
.groupBy('FunctionID')
.mapObject( FunctionID => _.groupBy(FunctionID,'StartDate' ))
.value();

但这给了我

这样的结果

喜欢内部组中的相同功能,但我想要内部组中的不同功能

请推荐

这就是嵌套组数据的方法。

data = [{
  "StartDate": "2018-09-11",
  "FunctionID": "276",
  "StartTime_EndTime": "08:00:00 AM - 11:00:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "13",
  "Expr": "12",
  "Act_Qty": "13",
  "Charge": "19",
  "Item": "Tea Sandwitches and Salads"
}, {
  "StartDate": "2018-09-11",
  "FunctionID": "276",
  "StartTime_EndTime": "08:00:00 AM - 11:00:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "13",
  "Expr": "12",
  "Act_Qty": "13",
  "Charge": "18",
  "Item": "Pasta Station"
}, {
  "StartDate": "2018-09-12",
  "FunctionID": "295",
  "StartTime_EndTime": "07:00:00 AM - 07:30:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "13",
  "Expr": "12",
  "Act_Qty": "13",
  "Charge": "1",
  "Item": "Tea Sandwitches and Salads"
}, {
  "StartDate": "2018-09-12",
  "FunctionID": "295",
  "StartTime_EndTime": "07:00:00 AM - 07:30:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "26",
  "Expr": "18",
  "Act_Qty": "19",
  "Charge": "9",
  "Item": "Coffee"
}, {
  "StartDate": "2018-09-13",
  "FunctionID": "298",
  "StartTime_EndTime": "09:00:00 AM - 11:00:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "13",
  "Expr": "12",
  "Act_Qty": "13",
  "Charge": "19",
  "Item": "Tea Sandwitches and Salads"
}, {
  "StartDate": "2018-09-13",
  "FunctionID": "298",
  "StartTime_EndTime": "07:00:00 AM - 11:00:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "13",
  "Expr": "12",
  "Act_Qty": "13",
  "Charge": "18",
  "Item": "Pasta Station"
}, {
  "StartDate": "2018-09-15",
  "FunctionID": "299",
  "StartTime_EndTime": "06:00:00 AM - 07:30:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "13",
  "Expr": "12",
  "Act_Qty": "13",
  "Charge": "1",
  "Item": "Tea Sandwitches and Salads"
}, {
  "StartDate": "2018-09-16",
  "FunctionID": "299",
  "StartTime_EndTime": "06:30:00 AM - 07:30:00 AM",
  "ResDesc": "Breakfast",
  "functionRoom": "Living Room",
  "Gurenteed": "26",
  "Expr": "18",
  "Act_Qty": "19",
  "Charge": "9",
  "Item": "Coffee"
}];

var byStartDate = _.groupBy(data, 'StartDate');
_.each(byStartDate, (d, i) => {
  byStartDate[i] = _.groupBy(d, 'FunctionID');
  _.each(byStartDate[i], (d1, i1) => {
    byStartDate[i][i1] = _.groupBy(d1, d2 => {
      return d2["StartTime_EndTime"].split("-")[0].trim();
    });
  });
});

console.log(byStartDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

如有任何疑问,请告诉我。