检查 JavaScript 的重叠时间


我们需要编写一个 JavaScript 函数,此函数接受包含时间间隔的数组(起始时间和结束时间,如下所示 −

const arr = [
   { start: '01:00', end: '04:00' },
   { start: '05:00', end: '08:00' },
   { start: '07:00', end: '11:00' },
   { start: '09:30', end: '18:00' },
];

我们的函数应遍历该对象数组,并检查该数组的所有元素与其他元素是否重叠。

如果找到重叠时间段,则停止迭代,否则返回 true。重叠时间段是指具有一些共同时间的时段。

示例

const arr = [
   { start: '01:00', end: '04:00' },
   { start: '05:00', end: '08:00' },
   { start: '07:00', end: '11:00' },
   { start: '09:30', end: '18:00' },
];
const overlapping = (a, b) => {
   const getMinutes = s => {
      const p = s.split(':').map(Number);
      return p[0] * 60 + p[1];
   };
   return getMinutes(a.end) > getMinutes(b.start) && getMinutes(b.end) > getMinutes(a.start);
};
const isOverlapping = (arr) => {
   let i, j;
   for (i = 0; i < arr.length - 1; i++) {
       for (j = i + 1; j < arr.length; j++) {
         if (overlapping(arr[i], arr[j])) {
            return true;
         }
      };
   };
   return false;
};
console.log(isOverlapping(arr));

输出

控制台中的输出将是 −

true

更新时间: 2020-11-23

2K+ 次浏览

启动您的 职业生涯

通过完成课程来获得认证

开始学习
广告