gpt4 book ai didi

javascript - 如何在一组日期中找到给定日期?

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

我有一组数组格式的日期,如下所示

[
["2018-10-15T18:30:00.000Z","2018-10-15T18:30:00.000Z"],
["2018-10-23T18:30:00.000Z","2018-10-25T18:30:00.000Z"],
["2018-10-28T18:30:00.000Z","2018-10-29T18:30:00.000Z"]
]

我使用这个数组来选择日期范围。即,用户选择日期范围 oct 15oct 23-25oct 28-29

我想在上面的选择部分中找到给定的日期。并返回所选日期范围的索引。例如,如果我传递 Oct 15,那么它也是选择的一部分,因此输出将为索引 0,如果我给出 OCT 24,那么它也是选择的一部分OCT 23-25 并且输出将为索引 1。如果我给出 Nov 1,则它不是选择输出的一部分,输出将为 -1

所以我的问题是如何通过优化的解决方案实现这一目标。到目前为止我所做的是

function getIndexOfDate(dateSelected = [], currentDate) {
for (i = 0; i < dateSelected.length; i++) {
if(checkDateIsPartOfDateRange(dateSelected[i],currentDate)){
return i;
}
}
return -1
}


function checkDateIsPartOfDateRange(dateRange = [], date) {
startDate = dateRange[0];
endDate = dateRange[1]
if (date.getTime() >= startDate.getTime() && date.getTime() <= endDate.getTime()) {
return true;
} else {
return false;
}
}

我不知道,但我认为这不是一个优化的解决方案,可能还有另一种方法可以做到这一点。请给我一个建议。

最佳答案

因为数组中的日期是 ISO 8601 格式,所以您可以只使用字符串比较来比较它们(只要不存在时区信息)。

然后您可以使用 Array.prototype.findIndex()使用回调函数获取数组中的索引:

const getIndex = (dates, d) => dates.findIndex(([s, e]) => d >= s && d <= e);

这是一个完整的片段:

const dates = [
["2018-10-15T18:30:00.000Z","2018-10-15T18:30:00.000Z"],
["2018-10-23T18:30:00.000Z","2018-10-25T18:30:00.000Z"],
["2018-10-28T18:30:00.000Z","2018-10-29T18:30:00.000Z"]
];

const getIndex = (dates, d) => dates.findIndex(([s, e]) => d >= s && d <= e);

console.log(getIndex(dates, '2018-10-24T12:00:00.000Z')); // 1
console.log(getIndex(dates, '2018-10-26T12:00:00.000Z')); // -1

如果使用 Date 对象,则相同的代码段:

const dates = [
[new Date("2018-10-15T18:30:00.000Z"),new Date("2018-10-15T18:30:00.000Z")],
[new Date("2018-10-23T18:30:00.000Z"),new Date("2018-10-25T18:30:00.000Z")],
[new Date("2018-10-28T18:30:00.000Z"),new Date("2018-10-29T18:30:00.000Z")]
];

const getIndex = (dates, d) => dates.findIndex(([s, e]) => d >= s && d <= e);

console.log(getIndex(dates, new Date('2018-10-24T12:00:00.000Z'))); // 1
console.log(getIndex(dates, new Date('2018-10-26T12:00:00.000Z'))); // -1

关于javascript - 如何在一组日期中找到给定日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52772794/

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