【发布时间】:2020-07-15 15:29:40
【问题描述】:
我为过滤日期编写了一些代码。 在这里,我尝试使用 return boolean 制作一个过滤器,但此代码仅适用于“项目”的一个对象,而 我需要过滤整个对象才能显示给目前只有网站的工作时间表。 有人要求优化我编写的代码。
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
item = {
"work_schedule": {
"schedule": {
"MONDAY": {
"begin": "10:00",
"finish": "22:00"
},
"TUESDAY": {
"begin": "10:00",
"finish": "22:00"
},
"WEDNESDAY": {
"begin": "10:00",
"finish": "22:00"
},
"THURSDAY": {
"begin": "10:00",
"finish": "22:00"
},
"FRIDAY": {
"begin": "10:00",
"finish": "22:00"
}
}
},
"work_schedule": {
"schedule": {
"MONDAY": {
"begin": "10:00",
"finish": "22:00"
},
"TUESDAY": {
"begin": "10:00",
"finish": "22:00"
},
"WEDNESDAY": {
"begin": "10:00",
"finish": "22:00"
},
"THURSDAY": {
"begin": "10:00",
"finish": "22:00"
},
"FRIDAY": {
"begin": "10:00",
"finish": "22:00"
},
"SATURDAY": {
"begin": "10:00",
"finish": "22:00"
},
"SUNDAY": {
"begin": "10:00",
"finish": "22:00"
}
}
},
"work_schedule": {
"schedule": {
"MONDAY": {
"begin": "08:00",
"finish": "17:00"
},
"TUESDAY": {
"begin": "08:00",
"finish": "17:00"
},
"WEDNESDAY": {
"begin": "08:00",
"finish": "17:00"
},
"THURSDAY": {
"begin": "08:00",
"finish": "17:00"
},
"FRIDAY": {
"begin": "08:00",
"finish": "17:00"
}
}
},
}
const checkWorkDay = () => {
if (item?.work_schedule?.schedule) {
const dayOnWork = Object.keys(item?.work_schedule?.schedule).filter(
(el, index) => index == new Date().getDay() - 1
) // here I tried to filter one part of object I mean item. work_schedule.schedule
let time = null
switch (dayOnWork[0]) {
case 'MONDAY': {
time = item?.work_schedule?.schedule?.MONDAY
break
}
case 'TUESDAY': {
time = item?.work_schedule?.schedule?.TUESDAY
break
}
case 'WEDNESDAY': {
time = item?.work_schedule?.schedule?.WEDNESDAY
break
}
case 'THURSDAY': {
time = item?.work_schedule?.schedule?.THURSDAY
break
}
case 'FRIDAY': {
time = item?.work_schedule?.schedule?.FRIDAY
break
}
case 'SATURDAY': {
time = item?.work_schedule?.schedule?.SATURDAY
break
}
case 'SUNDAY': {
time = item?.work_schedule?.schedule?.SUNDAY
break
}
default: {
break
}
}
let beginTime = time?.begin.split(':')
let finishTime = time?.finish.split(':')
if (beginTime !== null && finishTime !== null) {
return (
beginTime[0] <= new Date().getHours() &&
finishTime[0] >= new Date().getHours()
)
}
}
}
【问题讨论】:
标签: javascript reactjs date filter