【发布时间】:2019-07-01 12:12:08
【问题描述】:
我有 10 年的记录。因此 API 将返回我需要根据日期时间戳对数组进行分组的数组。用户可以选择分组选项为
- 小时
- 6 小时(每天)
- 天
- 周
- 月
- 年
数据示例
[{
"x": "2019-02-05T14:28:45.540Z",
"y": 0.18809978382007495
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.42347719862654404
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.365386421616013
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.49364744650351033
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.31133576985952016
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.5509062071104307
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.5556739085429424
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.6668348570127745
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.4908101365372941
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.6042127351503115
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.3725497529313371
}, {
"x": "2019-02-05T14:28:45.540Z",
"y": 0.29687095332790064
}, {
"x": "2018-02-07T11:19:19.034Z",
"y": 0
}]
是否有任何通用的解决方案可以按小时/天/周/月/年进行分组
示例输出我想要的。
一小时
{
"OCT 2th 2012 6AM": [
"2012-10-02 06:00:00",
"2012-10-10 06:03:51"
],
"NOV 11th 2012 AM": [
"2012-11-11 09:07:21",
"2012-11-10 09:03:51"
],
"OCT 6th 2013 2PM": [
"2013-10-07 02:07:02"
],
}
每 6 小时
{
"OCT 6th 2012 first 6 hours": [
"2012-10-11 06:00:00",
],
"OCT 6th 2012 second 6 hours": [
"2012-10-10 06:03:51"
],
"NOV 6th 2012 AM": [
"2012-11-11 09:07:21",
"2012-111-10 09:03:51"
],
"OCT 6th 2013 2PM": [
"2013-10-07 02:07:02"
],
}
一天
{
"OCT 2th 2012": [
"2012-10-2 06:00:00",
],
"OCT 10th 2012": [
"2012-10-10 06:03:51"
],
"NOV 11th 2012": [
"2012-11-11 09:07:21",
"2012-11-10 09:03:51"
],
"OCT 7th 2013": [
"2013-10-07 02:07:02"
],
}
.for 一周
{
"OCT 2012 week number": [
"2012-10-2 06:00:00",
],
"OCT 2012 week number": [
"2012-10-10 06:03:51"
],
}
一个月
{
"OCT 2012 ": [
"2012-10-2 06:00:00",
],
"NOV 2012": [
"2012-11-10 06:03:51"
],
}
【问题讨论】:
-
如果可能的话,您能否提供您所期望的示例输出。
-
您想像嵌套分组一样将小时按天、按周按天、按月按年分组吗?所以像
{2009:{Jan:{2:21:{8:[{item}]}}}} -
如果您不需要嵌套组,那么 lodash groupBy 将函数作为第二个参数:
_.groupBy(data,item=>new Date(item.x).getFullYear())将按年份分组。您可以通过以下方式使其动态化:const currentGroup='year';const groups = {year:item=>new Date(item.x).getFullYear()};_.groupBy(data,groups[currentGroup]) -
@HMR。我已经更新了我的问题,请检查
-
你需要知道什么,如何编写从日期返回正确键的函数或如何编写通用组方法?
标签: javascript arrays grouping