gpt4 book ai didi

javascript - 我将如何简化包含 "working hours"的对象?

转载 作者:行者123 更新时间:2023-12-05 03:33:45 25 4
gpt4 key购买 nike

我有一个对象,其中包含为一周中的每一天指定的办公时间/工作时间。我的目标是能够简化对象的文本输出,而无需重复与前一天工作时间相同的不必要的工作日。

当前输出如下:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com