我有一个日期数组,如下所示:
[
"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()
的函数array
。在reduce内部,我们将一个空对象传递给accumulator
开始对数据进行分组。然后我们会得到year
, month
and date
从当前迭代元素。我在这里解构了这些价值。其余的逻辑从代码中很容易理解。
var data=[ "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 result = data.reduce((acc, elem)=>{
const [year, month, day] = [new Date(elem).getFullYear(), new Date(elem).getMonth(), new Date(elem).getDate()];
acc[year] = acc[year] || {};
acc[year][month] = [...(acc[year][month] || []), day];
return acc;
},{});
console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)