Javascript-使用日期时间数据循环到数组中,并检查日期是否在数组中的日期之间

Javascript-使用日期时间数据循环到数组中,并检查日期是否在数组中的日期之间,javascript,momentjs,Javascript,Momentjs,我使用的是moment.js,我的数组/对象中有这种数据 [{"start_datetime":"05/18/2021 1:30pm","end_datetime":"05/18/2021 2:00pm"}, {"start_datetime":"05/18/2021 2:00pm","end_datetime":"05/18/2021 3:30

我使用的是moment.js,我的数组/对象中有这种数据

[{"start_datetime":"05/18/2021 1:30pm","end_datetime":"05/18/2021 2:00pm"}, 
{"start_datetime":"05/18/2021 2:00pm","end_datetime":"05/18/2021 3:30pm"},
{"start_datetime":"05/18/2021 1:30pm","end_datetime":"05/18/2021 3:30pm"}]
我想创建一个函数来读取这个数组,并检查数组中的值之间是否有值

示例:第一个键是
{“开始日期时间”:“05/18/2021 1:30pm”,“结束日期时间”:“05/18/2021 2:00pm”}
位于最后一个键之间,最后一个键是
{“开始日期时间”:“05/18/2021 1:30pm”,“结束日期时间”:“05/18/2021 3:30pm”}

我知道我们可以使用矩函数,但我正在考虑循环数组中所有值的最有效方法

提前谢谢

常数范围=[{
“开始日期时间”:“2021年5月18日下午1:30”,
“结束日期时间”:“2021年5月18日下午2:00”
},
{
“开始日期时间”:“2021年5月18日下午2:00”,
“结束日期时间”:“2021年5月18日下午3:30”
},
{
“开始日期时间”:“2021年5月18日下午1:30”,
“结束日期时间”:“2021年5月18日下午3:30”
}
];
//对于每个范围,比较每个范围
用于(范围常数d){
用于(范围常数){
如果(d==r)继续;//如果范围相等,则跳过
如果(
时刻(d.开始日期时间,“MM-DD-YYYY hh:MM:A”)>=时刻(r.开始日期时间,“MM-DD-YYYY hh:MM:A”)&&

瞬间(d.end_datetime,“MM-DD-YYYY hh:MM:A”)我能够用以下代码回答它:

const timeCollection = [{
    "start_datetime": "05/18/2021 1:30pm",
    "end_datetime": "05/18/2021 2:00pm"
  },
  {
    "start_datetime": "05/18/2021 2:00pm",
    "end_datetime": "05/18/2021 3:30pm"
  },
  {
    "start_datetime": "05/18/2021 1:30pm",
    "end_datetime": "05/18/2021 3:30pm"
  }
];

let overlapped = false;
    for (let i=0; i<timeCollection.length;i++) {
        for (let a=0; a<timeCollection.length;a++) {
            if (i == a) {
                continue;
            }
            //if the start and end date are both the same with the comparison data.
            if (
                moment(timeCollection[i].start_datetime, "MM-DD-YYYY hh:mm:A").format("MM-DD-YYYY hh:mm:A") === moment(timeCollection[a].start_datetime, "MM-DD-YYYY hh:mm:A").format("MM-DD-YYYY hh:mm:A") &&
                moment(timeCollection[i].end_datetime, "MM-DD-YYYY hh:mm:A").format("MM-DD-YYYY hh:mm:A") === moment(timeCollection[a].end_datetime, "MM-DD-YYYY hh:mm:A").format("MM-DD-YYYY hh:mm:A")
            ) {
                overlapped = true;
            } else if (
                //checker to check if date and time are in between..
                //making sure also that the time belongs to the crew
                moment(timeCollection[i].start_datetime, "MM-DD-YYYY hh:mm:A").isBetween(
                    moment(timeCollection[a].start_datetime, "MM-DD-YYYY hh:mm:A"),
                    moment(timeCollection[a].end_datetime, "MM-DD-YYYY hh:mm:A")) ||
                    moment(timeCollection[i].end_datetime, "MM-DD-YYYY hh:mm:A").isBetween(
                        moment(timeCollection[a].start_datetime, "MM-DD-YYYY hh:mm:A"),
                        moment(timeCollection[a].end_datetime, "MM-DD-YYYY hh:mm:A"))) {
                overlapped = true;
            }
        }
    }

console.log(overlapped);
const timeCollection=[{
“开始日期时间”:“2021年5月18日下午1:30”,
“结束日期时间”:“2021年5月18日下午2:00”
},
{
“开始日期时间”:“2021年5月18日下午2:00”,
“结束日期时间”:“2021年5月18日下午3:30”
},
{
“开始日期时间”:“2021年5月18日下午1:30”,
“结束日期时间”:“2021年5月18日下午3:30”
}
];
让重叠=假;

for(设i=0;它在我这端不起作用。它返回错误的结果。