Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

겹치는 시간 확인 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를 반환하고 그렇지 않으면 false를 반환합니다. 간격이 겹치는 것은 시간이 공통적으로 있는 시간 간격을 의미합니다.

예시

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