Оптимизация проверки доступности для системы бронированияJavascript

Форум по Javascript
Ответить
Anonymous
 Оптимизация проверки доступности для системы бронирования

Сообщение Anonymous »

Я работаю над системой резервирования ресурсов, и мне нужен совет по оптимизации логики проверки доступности ресурсов. Текущая реализация работает, но кажется неэффективной, поскольку выполняет ненужные проверки.
Вот сценарий:
  • У меня есть список ресурсов (например, устройств, комнат или любого доступного для бронирования объекта), хранящихся в resourcesList.
  • Каждый ресурс может иметь несколько бронирований, хранящихся в bookingList.< /li>
    Когда поступает запрос на бронирование, Мне нужно проверить, совпадают ли запрошенные даты с существующими бронированиями для этого ресурса. Если ресурс доступен, добавляю его в список подтвержденных бронирований. У каждого бронирования есть дата начала и дата окончания.
Вот мой текущий код:

Код: Выделить всё

for (let resource of resourceList) {
if (resource.status === "Booked") {
const resourceBookings = bookingList.filter(booking => booking.resourceId === resource.resourceId);

// Check if the resource is available for the requested dates
const isAvailable = resourceBookings.every(booking => {
const existingStart = new Date(booking.startDate);
const existingEnd = new Date(booking.endDate);

return endDate < existingStart || startDate > existingEnd;
});

// If available and still need resources, add to the booking
if (isAvailable && availableResources.length < requiredResources) {
availableResources.push(resource.resourceId);
newBookings.push({
resourceId: resource.resourceId,
startDate: startDate.toISOString().split("T")[0],
endDate: endDate.toISOString().split("T")[0]
});
}
}
}

if (newBookings.length > 0) {
console.log("Booking made after checking dates:", newBookings);
} else {
console.log("No resources available for the requested dates.");
}
Мои опасения:
  • Ненужные проверки: Я считаю, что проверять каждое бронирование не следует Кстати, а есть ли более эффективный способ проверить только часть бронирований?
  • Проблемы с производительностью. По мере роста количества ресурсов и бронирований этот подход может плохо масштабироваться.
Если вы решали подобную проблему или у вас есть какие-либо идеи, я буду рад их услышать!
Заранее благодарим вас за ваши предложения.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-system
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»