【发布时间】:2020-04-02 01:47:44
【问题描述】:
假设我有这组数据:
"results": [
{
"__metadata": {
"uri": "https://xxxx.sapbydesign.com/sap/byd/odata/ana_businessanalytics_analytics.svc/RPHCMRPMU01_Q1001QueryResults('%7CCCALENDAR_DAY%3D02%2F19%2F2020%7CCCALENDAR_MONTH%3D02%2F2020%7CCCALENDAR_WEEK%3D08%2F2020%7CCEMPLOYEE%3DEXT011%7C')",
"type": "sapbyd.RPHCMRPMU01_Q1001QueryResult"
},
"CCALENDAR_DAY": "/Date(1582070400000)/",
"CCALENDAR_MONTH": "02/2020",
"CCALENDAR_WEEK": "08/2020",
"CEMPLOYEE": "EXT011",
"KCGROSS_CAPACITY": "8.00000000000000",
"KCVACATION": "0.00000000000000",
"UCGROSS_CAPACITY": "HUR",
"UCVACATION": "HUR"
},
{
"__metadata": {
"uri": "https://xxxx.sapbydesign.com/sap/byd/odata/ana_businessanalytics_analytics.svc/RPHCMRPMU01_Q1001QueryResults('%7CCCALENDAR_DAY%3D02%2F20%2F2020%7CCCALENDAR_MONTH%3D02%2F2020%7CCCALENDAR_WEEK%3D08%2F2020%7CCEMPLOYEE%3DEXT011%7C')",
"type": "sapbyd.RPHCMRPMU01_Q1001QueryResult"
},
"CCALENDAR_DAY": "/Date(1582156800000)/",
"CCALENDAR_MONTH": "02/2020",
"CCALENDAR_WEEK": "08/2020",
"CEMPLOYEE": "EXT011",
"KCGROSS_CAPACITY": "8.00000000000000",
"KCVACATION": "0.00000000000000",
"UCGROSS_CAPACITY": "HUR",
"UCVACATION": "HUR"
},
{
"__metadata": {
"uri": "https://xxxx.sapbydesign.com/sap/byd/odata/ana_businessanalytics_analytics.svc/RPHCMRPMU01_Q1001QueryResults('%7CCCALENDAR_DAY%3D02%2F21%2F2020%7CCCALENDAR_MONTH%3D02%2F2020%7CCCALENDAR_WEEK%3D08%2F2020%7CCEMPLOYEE%3DEXT011%7C')",
"type": "sapbyd.RPHCMRPMU01_Q1001QueryResult"
},
"CCALENDAR_DAY": "/Date(1582243200000)/",
"CCALENDAR_MONTH": "02/2020",
"CCALENDAR_WEEK": "08/2020",
"CEMPLOYEE": "EXT011",
"KCGROSS_CAPACITY": "8.00000000000000",
"KCVACATION": "0.00000000000000",
"UCGROSS_CAPACITY": "HUR",
"UCVACATION": "HUR"
},
{
"__metadata": {
"uri": "https://xxxx.sapbydesign.com/sap/byd/odata/ana_businessanalytics_analytics.svc/RPHCMRPMU01_Q1001QueryResults('%7CCCALENDAR_DAY%3D02%2F24%2F2020%7CCCALENDAR_MONTH%3D02%2F2020%7CCCALENDAR_WEEK%3D09%2F2020%7CCEMPLOYEE%3DEXT011%7C')",
"type": "sapbyd.RPHCMRPMU01_Q1001QueryResult"
},
"CCALENDAR_DAY": "/Date(1582502400000)/",
"CCALENDAR_MONTH": "02/2020",
"CCALENDAR_WEEK": "09/2020",
"CEMPLOYEE": "EXT011",
"KCGROSS_CAPACITY": "8.00000000000000",
"KCVACATION": "0.00000000000000",
"UCGROSS_CAPACITY": "HUR",
"UCVACATION": "HUR"
},
{
"__metadata": {
"uri": "https://xxxx.sapbydesign.com/sap/byd/odata/ana_businessanalytics_analytics.svc/RPHCMRPMU01_Q1001QueryResults('%7CCCALENDAR_DAY%3D02%2F25%2F2020%7CCCALENDAR_MONTH%3D02%2F2020%7CCCALENDAR_WEEK%3D09%2F2020%7CCEMPLOYEE%3DEXT011%7C')",
"type": "sapbyd.RPHCMRPMU01_Q1001QueryResult"
},
"CCALENDAR_DAY": "/Date(1582588800000)/",
"CCALENDAR_MONTH": "02/2020",
"CCALENDAR_WEEK": "09/2020",
"CEMPLOYEE": "EXT011",
"KCGROSS_CAPACITY": "8.00000000000000",
"KCVACATION": "0.00000000000000",
"UCGROSS_CAPACITY": "HUR",
"UCVACATION": "HUR"
}]
我想先按员工 ID CEMPLOYEE 对它们进行分组和链接:
let e = _.chain(data.d.results)
// Group the elements of the result based on `CEMPLOYEE` property
.groupBy("CEMPLOYEE")
// `key` is group's name (CEMPLOYEE), `value` is the array of objects
.map((value, key) => ({
Emp: key,
Capacity: value
})).value();
正如预期的那样,我得到了我想要的第一个输出,如下所示:
Emp: "E1001"
Capacity: (62) [{…}, {…}, {…}, {…}, {…}]
__proto__: Object
现在我被卡住了,我想在我的容量节点内再次做同样的事情,
我想要实现的目标和最终期望的输出如下所示:
Emp: "E1001"
Capacity: (62) [
Week: "09/2020"
CapacityPerWeek: (5) [{…}, {…}, {…}, {…}, {…}
etc...
]
__proto__: Object
所以我尝试了:
let e = _.chain(data.d.results)
// Group the elements of the result based on `CEMPLOYEE` property
.groupBy("CEMPLOYEE")
// `key` is group's name (CEMPLOYEE), `value` is the array of objects
.map((value, key) => ({
Emp: key,
Capacity: value
})).value();
_.forEach(e, function (capacityItem) {
capacityItem.ChainedCapacity = _.chain(capacityItem.Capacity)
// Group the elements of the result based on `CCALENDAR_WEEK` property
.groupBy("CCALENDAR_WEEK")
// `key` is group's name (CCALENDAR_WEEK), `value` is the array of objects
.map((value, key) => ({
Week: key,
CapacityPerWeek: value
})).value();
});
但是它给了我一个癌变的输出,它不必要地循环了我的物品
如何在不循环的情况下实现它?
【问题讨论】:
标签: javascript arrays sorting grouping lodash