- 此问题在此处已有答案**:
How to get Current week from given array of objects date in javascript(5个答案)
12小时前关门了。
我正在开发一个算法,它应该从一个对象数组中返回本周的数据(包括整个月份的数据),数据看起来像这样:
[
{
date: 02/01/2023, // date is in ms
soldItems:10
},
{
date: 02/02/2023,
soldItems:7
},
{
date: 02/03/2023,
soldItems:40
},
{},...
]
我需要获取本周可用日期(周一至周三,2/6/2023 - 2/8/2023)的数据,如下所示:
{
date: 02/06/2023,
soldItems:45
},
{
date: 02/07/2023,
soldItems:30
},
{
date: 02/08/2023,
soldItems:5
},
我知道我可以像这样度过这周的几天:
Array.from(Array(7).keys()).map((idx) => {const d = new Date(); d.setDate(d.getDate() - d.getDay() + idx); return d }
///returns
[
2023-02-05T01:36:03.197Z,
2023-02-06T01:36:03.197Z,
2023-02-07T01:36:03.197Z,
2023-02-08T01:36:03.197Z,
2023-02-09T01:36:03.197Z,
2023-02-10T01:36:03.197Z,
2023-02-11T01:36:03.197Z
]
但是我不知道如何从对象数组中提取当前周的可用日期,例如我们没有02/09/2023(明天的日期)的数据,所以我只需要数组中的本周从星期一开始到可用日期(需要是动态的)。
3条答案
按热度按时间sshcrbum1#
我认为您需要将本周的格式修改为“mm/dd/yyyy”,并对数据使用filter(),如下所示:
zvokhttg2#
由于您的日期是以时间值(自ECMAScript纪元以来的毫秒数)表示的,因此您只需要获取日期范围开始和结束时的时间值,然后对这些值进行过滤。
看起来你的一周从星期一开始,所以要获得给定日期的一周中的任何特定工作日:
1.获取日期的工作日编号
1.如果是0(星期日),就改成7
1.从日期中减去工作日编号
1.添加所需日期的日期编号(其中Mon为1,Sun为7)
代码为:
你可以只比较时间值和日期,它们将被强制为数字,或者你可以通过比较
date.getTime()
显式地完成。rqqzpn5f3#
我推荐使用date-fns,它非常小,而且树可以摇动,它使这一点变得简单明了: