// 予約リスト(APIから取得した想定)
const reservationList = [
{ startTime: new Date('2021-10-01 09:00:00'), endTime: new Date('2021-10-01 10:00:00') },
{ startTime: new Date('2021-10-01 10:00:00'), endTime: new Date('2021-10-01 11:00:00') },
{ startTime: new Date('2021-10-01 14:00:00'), endTime: new Date('2021-10-01 15:00:00') },
];
function searchReservation(params) {
const { startTime, endTime } = params;
let canReserve = true;
for (reservation of reservationList) {
// 予約可能な条件の逆の場合、予約できないフラグを立てる
if (!((reservation.endTime <= startTime) || (endTime <= reservation.startTime))) {
canReserve = false;
break; // falseになった場合、ループを終了する
};
}
return canReserve;
};
// 実行
// 予約が埋まっていない場合、true
console.log(searchReservation({
startTime: new Date('2021-10-01 11:00:00'),
endTime: new Date('2021-10-01 12:00:00')
})); // true
// 予約が埋まっている場合、false
console.log(searchReservation({
startTime: new Date('2021-10-01 09:00:00'),
endTime: new Date('2021-10-01 10:00:00')
})); // false