Javascript 如何形成独特的年、月、日嵌套结构?

Javascript 如何形成独特的年、月、日嵌套结构?,javascript,Javascript,我有一系列日期,如下所示: [ “2020-06-20T11:18:40.359Z”, “2020-06-15T11:17:45.511Z”, “2020-05-13T11:19:45.511Z”, “2019-04-20T11:49:27.828Z” ] 如何从数组中获取以下结构 { 2020: { 5: [ 20, 15 ], 4: [ 13 ] }, 2019: { 3: [ 20 ] } } 我认为值得注意的是,初始数组可能包含数千甚至上万个日期,并且它每秒更新一次。由于您需要在此处

我有一系列日期,如下所示:

[
“2020-06-20T11:18:40.359Z”,
“2020-06-15T11:17:45.511Z”,
“2020-05-13T11:19:45.511Z”,
“2019-04-20T11:49:27.828Z”
]
如何从数组中获取以下结构

{
2020: {
5: [
20, 15
],
4: [
13
]
},
2019: {
3: [
20
]
}
}

我认为值得注意的是,初始数组可能包含数千甚至上万个日期,并且它每秒更新一次。

由于您需要在此处对数据进行分类,最好的方法是
reduce()
数组的
函数。在reduce内部,我们将一个空对象传递给
累加器
,开始对数据进行分组。然后,我们将从当前迭代元素中获取
日期
。我在这里分解了这些值。从代码中可以很好地理解其余的逻辑

var数据=[“2020-06-20T11:18:40.359Z”,“2020-06-15T11:17:45.511Z”,“2020-05-13T11:19:45.511Z”,“2019-04-20T11:49:27.828Z”];
var结果=数据减少((acc,elem)=>{
常量[年、月、日]=[新日期(elem).getFullYear(),新日期(elem).getMonth(),新日期(elem).getDate()];
acc[年度]=acc[年度]|{};
acc[年][月]=[…(acc[年][月]| |[]),日];
返回acc;
},{});

控制台日志(结果)
由于您需要在此处对数据进行分类,最好的方法是
数组的
函数
reduce()
。在reduce内部,我们将一个空对象传递给
累加器
,开始对数据进行分组。然后,我们将从当前迭代元素中获取
日期
。我在这里分解了这些值。从代码中可以很好地理解其余的逻辑

var数据=[“2020-06-20T11:18:40.359Z”,“2020-06-15T11:17:45.511Z”,“2020-05-13T11:19:45.511Z”,“2019-04-20T11:49:27.828Z”];
var结果=数据减少((acc,elem)=>{
常量[年、月、日]=[新日期(elem).getFullYear(),新日期(elem).getMonth(),新日期(elem).getDate()];
acc[年度]=acc[年度]|{};
acc[年][月]=[…(acc[年][月]| |[]),日];
返回acc;
},{});

控制台日志(结果)顺便说一句,您作为预期结果提供的结构不正确,年份应该是对象而不是数组。另外,您到目前为止尝试了什么?@ibrahimmahrir,谢谢,修复了这个问题。月份,日期根据当地时区对吗?顺便说一句,您作为预期结果提供的结构不正确,年份应该是对象而不是数组。另外,到目前为止您尝试了什么?@ibrahimmahrir,谢谢,修复了这个问题。月份,日期根据本地时区确定,对吗?也许最好使用
.getFullYear()
来说明接近除夕的日期?@thammada.ts,是的,我们也可以这样做。不解释您的脚本是做什么的?只需在OP上添加一堆>=ES6魔术?也许最好使用
.getFullYear()
来说明接近除夕的日期?@thammada.ts,是的,我们也可以这样做。不解释您的脚本是什么?只需在OP上添加一堆>=ES6魔法?