Javascript 如何使用moment和lodash按对象字段分组并按日期计数?
我有一个相当复杂的情况,我不知道如何转换使用lodash和矩。假设我有一个日期范围和这个初始数据Javascript 如何使用moment和lodash按对象字段分组并按日期计数?,javascript,json,momentjs,lodash,Javascript,Json,Momentjs,Lodash,我有一个相当复杂的情况,我不知道如何转换使用lodash和矩。假设我有一个日期范围和这个初始数据 var startDate = "2018-02-21" var endDate = "2018-02-23" var data = [ { "date": "2018-02-21 21:21:17", "group": "A" }, { "date": "2018-02-21 21:21:17", "gr
var startDate = "2018-02-21"
var endDate = "2018-02-23"
var data = [
{
"date": "2018-02-21 21:21:17",
"group": "A"
},
{
"date": "2018-02-21 21:21:17",
"group": "B"
},
{
"date": "2018-02-23 21:21:17",
"group": "A"
},
{
"date": "2018-02-21 21:21:17",
"group": "B"
}
];
我想使用lodash对所有“group”字段进行分组,并在新对象中添加一个名为“dates”的新字段,该字段将是日期的键/值对。键将是日期范围(从startDate到endDate),值将是匹配日期的计数
新输出如下所示:
var output = [
{
"group": "A",
"dates": [
"2018-02-21": 1,
"2018-02-22": 0
"2018-02-23": 1
]
},
{
"group": "B",
"dates": [
"2018-02-21": 2,
"2018-02-22": 0,
"2018-02-23": 0
]
}
];
我创建了一个JSFIDLE,并导入了这种情况的瞬间和细节
如果你能帮忙,非常感谢 您可以用纯javascript解决这个问题 首先在开始日期和结束日期之间创建一个日期数组。如果
数据中缺少天数,我们将在以后使用此数组
var dates = [];
var startDate = new Date("2018-02-21");
var endDate = new Date("2018-02-23");
for (var s = startDate; s <= endDate; s.setDate(s.getDate() + 1)) {
dates.push(s.toISOString().split('T')[0]);
}
输出为:
{
"0": {
"date": {
"2018-02-21": 1,
"2018-02-22": 0,
"2018-02-23": 1
},
"group": "A"
},
"1": {
"date": {
"2018-02-21": 2,
"2018-02-22": 0,
"2018-02-23": 0
},
"group": "B"
}
}
将上述代码复制到web控制台中,并查看控制台的结果。表格(输出)
我还修改了你的哇,非常感谢你一步一步地给我看!我真的很感激:)
{
"0": {
"date": {
"2018-02-21": 1,
"2018-02-22": 0,
"2018-02-23": 1
},
"group": "A"
},
"1": {
"date": {
"2018-02-21": 2,
"2018-02-22": 0,
"2018-02-23": 0
},
"group": "B"
}
}