我有一个对象,其中包含为一周中的每一天指定的办公时间/工作时间。 我的目标是能够简化对象的文本输出,而无需重复与前一天工作时间相同的不必要的工作日。
当前输出如下:
Monday: 08:00 AM - 21:00 PM
Tuesday: 08:00 AM - 21:00 PM
Wednesday: 08:00 AM - 21:00 PM
Thursday: 08:00 AM - 21:00 PM
Friday: 08:00 AM - 21:00 PM
Saturday: 08:00 AM - 18:00 PM
我正在执行以下操作以显示每天工作时间的文本输出(它应该跳过任何开始和结束时间设置为 00:00 AM 的日子 - 例如星期日
):
// Office hours object
const json_office_hours = '{"Monday":{"start":"08:00 AM","end":"21:00 PM"},"Tuesday":{"start":"08:00 AM","end":"21:00 PM"},"Wednesday":{"start":"08:00 AM","end":"21:00 PM"},"Thursday":{"start":"08:00 AM","end":"21:00 PM"},"Friday":{"start":"08:00 AM","end":"21:00 PM"},"Saturday":{"start":"08:00 AM","end":"18:00 PM"},"Sunday":{"start":"00:00 AM","end":"00:00 AM"}}';
const office_hours = JSON.parse(json_office_hours);
// Iteration
let office_hours_text = "";
let oh_prev_day = "Monday";
for (let day in office_hours) {
if (office_hours.hasOwnProperty(day)) {
let oh_start = office_hours[day].start;
let oh_end = office_hours[day].end;
if (oh_start !== '00:00 AM' && oh_end !== '00:00 AM') {
office_hours_text += day + ": " + oh_start + " - " + oh_end + '\n';
}
oh_prev_day = day;
}
}
console.log(office_hours_text);
我试图实现的简化输出如下:
Monday - Friday: 08:00 AM - 21:00 PM
Saturday: 08:00 AM - 18:00 PM
出于某种原因,我无法全神贯注于简化输出。
非常感谢您的帮助 - 谢谢。
最佳答案
这是一个相当简洁的解决方案,它根据之前的时间段进行分组,如果一天有偏差,它会创建一个新的时间段。
const json_office_hours = '{"Monday":{"start":"08:00 AM","end":"21:00 PM"},"Tuesday":{"start":"08:00 AM","end":"21:00 PM"},"Wednesday":{"start":"10:00 AM","end":"21:00 PM"},"Thursday":{"start":"08:00 AM","end":"21:00 PM"},"Friday":{"start":"08:00 AM","end":"21:00 PM"},"Saturday":{"start":"08:00 AM","end":"18:00 PM"},"Sunday":{"start":"00:00 AM","end":"00:00 AM"}}';
const office_hours = JSON.parse(json_office_hours);
let periods = [], p;
for (const [day, { start, end }] of Object.entries(office_hours)) {
if (start === '00:00 AM' || end === '00:00 AM') continue;
if (!p || p.start !== start || p.end !== end) {
p = { start, end, days: [day] };
periods.push(p);
} else {
p.days[1] = day;
}
}
for (const { days, start, end } of periods) {
const out = `${days.join(' - ')}: ${start} - ${end}`
console.log(out)
}
关于javascript - 我将如何简化包含 "working hours"的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70304809/