gpt4 book ai didi

javascript - 在两个日期对象集合中查找匹配对象

转载 作者:行者123 更新时间:2023-12-03 06:13:03 25 4
gpt4 key购买 nike

我有两个对象集合。我想知道 dates 中的哪些日期对象在 ranges 中具有匹配的起始日期。

只有一天中的部分是重要的,而不是小时/分钟。

我使用Moment.js比较天数 moment(obj.date).isSame(otherObj.date, 'day')

我应该使用链式过滤器来查找匹配的对象吗?或者某种循环中的循环?如果这是一个初学者问题,我很抱歉,但我有点迷失在这里。

dates = [
{date: Mon Aug 29 2016 00:00:00 GMT+0200 (CEST)},
{date: Tue Aug 30 2016 00:00:00 GMT+0200 (CEST)},
{date: Wed Aug 31 2016 00:00:00 GMT+0200 (CEST)}
etc...
]

ranges = [
{from: Tue Aug 30 2016 07:30:00 GMT+0200, to: Tue Aug 30 2016 08:30:00 GMT+0200},
{from: Tue Aug 30 2016 09:30:00 GMT+0200, to: Tue Aug 30 2016 10:30:00 GMT+0200},
{from: Wed Aug 31 2016 04:00:00 GMT+0200, to: Wed Aug 31 2016 05:00:00 GMT+0200}
etc...
]

最佳答案

您正在使用范围,因此仅检查范围的两端来确定日期是否在该范围内是不够的。

既然您提到了使用 Moment,您可以查看一个名为 moment-range 的插件。 。这样,您只需使用 ranges 构造范围数组即可。 ,然后匹配 dates 中的每个日期使用.contains()方法由moment-range提供:

ranges = ranges.map((range) => moment.range(range.from, range.to));

dates.forEach((dateObj) => {
dateObj.matchingRanges = ranges.filter((range) =>
range.contains(dateObj.date)
)
});

(使用此代码,您可以使用 dates[index].matchingRanges 访问每个日期的每个匹配范围)

关于javascript - 在两个日期对象集合中查找匹配对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com