Computer >> Máy Tính >  >> Lập trình >> Javascript

Kiểm tra thời gian trùng lặp JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng một mảng các khoảng thời gian (thời gian bắt đầu và kết thúc như thế này -

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' },
];

Hàm của chúng ta nên lặp qua mảng đối tượng này và kiểm tra tất cả các phần tử của mảng so với các phần tử khác.

Nếu tìm thấy khoảng thời gian trùng lặp, quá trình lặp sẽ dừng lại và trả về true, Ngược lại là false. Với khoảng thời gian trùng lặp, chúng tôi có nghĩa là các khoảng thời gian có một số thời gian chung.

Ví dụ

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

true