[['yyyy-mm-dd, hh:mm:ss', yyyy-mm-dd, hh:mm:ss'], ....]
이렇게 생긴 이차원 시계열 배열 안에서, 특정배열이 중복된 구간이 있는지 확인하는 로직을 구현했다.
function hasDuplicatedInterval({
intervalToCheck,
intervals,
}: {
intervalToCheck: TInterval;
intervals: TInterval[];
}): boolean => {
// Intervals 안에 중복된 값이 있는지 검증
const [startToCheck, endToCheck] = intervalToCheck;
const sortedIntervals = intervals
.filter(([start, end]) => start !== startToCheck && end !== endToCheck)
.map(([start, end]) => ({
start: new Date(start as string),
end: new Date(end as string),
}))
.sort((a, b) => a.start.getTime() - b.start.getTime());
// 중복된 구간을 검사
for (const { start, end } of sortedIntervals) {
if (
start <= new Date(endToCheck as string) &&
end >= new Date(startToCheck as string)
) {
return true; // 중복 발견
}
}
// 중복된 값이 없으면 false를 반환
return false;
}