Показ времени в соответствии с режимом работы сервиса
Есть сервис, у сервиса есть время работы, необходимо в соответствии со настройками времени работы показывать время открытия и закрытия сервиса (пример что есть и что должно получиться - ниже)
НА ВХОДЕ:
Настройка одного дня (пример)
weekDay: 1: 'понедельник, 2: 'вторник', 3: 'среда', 4: 'четверг', 5: 'пятница', 6: 'суббота', 0: 'воскресенье'
workingHours = [
{
'open_weekday': 1,
'close_weekday': 2,
'open_hours': 12,
'close_hours': 4,
'open_minutes': 0,
'close_minutes': 0,
'enabled': true,
}, ...
]
НА ВЫХОДЕ: Что нужно получить:
Понедельник: c 12:00 - 00:00
Вторник: c 00:00 - 04:00 , c 12:00 - 17:00
Среда: с 09:00 - 21:00
Четверг: с 09:00 - 13:00, c 14:00 - 21:00
Ответы (1 шт):
Автор решения: Артём
→ Ссылка
?, я преобразовал часы работы в задании в удобный формат через .map. После я передал дни недель в виде, который нужен Вам.
const weekDays = {
1: 'Понедельник',
2: 'Вторник',
3: 'Среда',
4: 'Четверг',
5: 'Пятница',
6: 'Суббота',
0: 'Воскресенье'
};
const workingHours = [{
'open_weekday': 1,
'close_weekday': 2,
'open_hours': 12,
'close_hours': 4,
'open_minutes': 0,
'close_minutes': 0,
'enabled': true
}, {
'open_weekday': 2,
'close_weekday': 2,
'open_hours': 12,
'close_hours': 17,
'open_minutes': 0,
'close_minutes': 0,
'enabled': true
}, {
'open_weekday': 3,
'close_weekday': 3,
'open_hours': 9,
'close_hours': 21,
'open_minutes': 0,
'close_minutes': 0,
'enabled': true
}, {
'open_weekday': 4,
'close_weekday': 4,
'open_hours': 9,
'close_hours': 13,
'open_minutes': 0,
'close_minutes': 0,
'enabled': true
}, {
'open_weekday': 4,
'close_weekday': 4,
'open_hours': 14,
'close_hours': 21,
'open_minutes': 0,
'close_minutes': 0,
'enabled': true
}];
function getWorkingHours(workingHours, weekDays) {
return workingHours.map(workingHour => {
if (workingHour.open_weekday !== workingHour.close_weekday) {
return [{
day: weekDays[workingHour.open_weekday],
open: `${`${workingHour.open_hours}`.padStart(2, 0)}:${`${workingHour.open_minutes}`.padStart(2, 0)}`,
close: `00:00`
}, {
day: weekDays[workingHour.close_weekday],
open: `00:00`,
close: `${`${workingHour.close_hours}`.padStart(2, 0)}:${`${workingHour.close_minutes}`.padStart(2, 0)}`
}]
}
return {
day: weekDays[workingHour.open_weekday],
open: `${`${workingHour.open_hours}`.padStart(2, 0)}:${`${workingHour.open_minutes}`.padStart(2, 0)}`,
close: `${`${workingHour.close_hours}`.padStart(2, 0)}:${`${workingHour.close_minutes}`.padStart(2, 0)}`
}
}).flat().map((time, index, array) => {
if (index === 0) {
return `${time.day}: с ${time.open} - ${time.close}`;
} else if (array[index - 1].day == time.day) {
return `, с ${time.open} - ${time.close}`;
} else {
return `\n${time.day}: с ${time.open} - ${time.close}`
};
}).join('');
};
console.log(getWorkingHours(workingHours, weekDays));
