간격의 배열을 취하는 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