Возможно, было бы более элегантно разобрать строку времени в число с помощью математики, например:
const timeStringToValue = (timeStr) => {
const [, hours, minutes, ampm] = timeStr.match(/(\d+):(\d+) ([ap]m)/);
const ampmHourModifier = ampm === 'pm' ? 12 : 0;
return Number(hours) + ampmHourModifier + (minutes / 60)
};
console.log(timeStringToValue('10:00 am'));
console.log(timeStringToValue('3:30 pm'));
И тогда вы можете назвать это:
const startMonTimeStr = $('.start-time-monday option:selected').text();
const startMonValue = timeStringToValue(startMonTimeStr);
и
const finishMonTimeStr = $('.finish-time-monday option:selected').text();
const finishMonValue = timeStringToValue(finishMonTimeStr);
switch
излишне многословны и безобразны вв большинстве случаев, и это не исключение.
Если вы хотите сложить все итоги, просчитайте изменение для каждого промежуточного итога, например:
const getBreakTotal = () => {
const minutes = $('.meal-break-monday option:selected').text().match(/^\d+/)[0];
return minutes / 60;
};
const getAllTotals = () => {
const startTotal = timeStringToValue($('.start-time-monday option:selected').text());
const breakTotal = getBreakTotal();
const finishTotal = timeStringToValue($('.finish-time-monday option:selected').text());
console.log(startTotal + breakTotal + finishTotal);
};
$('.start-time-monday, .meal-break-monday, .finish-time-monday').on('change', getAllTotals);