我正在使用 fullcalendar-react 并且我有以下时间表,我试图获取列表中最早的时间并删除关闭的日期:export default { monday: { startTime: '10:00', endTime: '23:00' }, tuesday: { startTime: '08:00', endTime: '00:00' }, wednesday: { startTime: '09:00', endTime: '22:00' }, thursday: { startTime: '14:00', endTime: '00:00' }, friday: undefined, saturday: { startTime: '13:00', endTime: '21:00' }, sunday: undefined}为了过滤关闭的日子并获得最早的时间,我正在使用过滤器和减少,就像下面一样:getOpeningHour() { let value: any = "00:00:00"; if (this.props.schedule) { const schedule = this.props.schedule; // the schedule I presented above if (Object.keys(schedule).length >= 1) { const minValue = Object.keys(schedule) .filter((key) => schedule[key]) .map((key: string) => moment(schedule[key].startTime, 'HH:mm')) .reduce((min: moment.Moment, value: moment.Moment) => (!min || value.isBefore(min) ? value : min), moment('00:00', 'HH:mm')); // Gets the earliest hour when the list is not empty, but when I give midnight as default value, it's always midnight. value = minValue.format('HH:mm:ss'); } } return value;}当我打开日历时,出现此错误:未捕获的类型错误:减少没有初始值的空数组, moment('00:00', 'HH:mm')当列表为空时,我试图提供默认值,但像这样,我的日历总是从午夜开始,而忽略其余部分,我想。- - -编辑 - - -该代码实际上正在执行它的工作,并且由于午夜早于 08:00,它将显示午夜。唯一的事情是仅当列表为空时才显示午夜。当我使用 moment() 小时时如何解决此问题?谢谢!
1 回答

互换的青春
TA贡献1797条经验 获得超6个赞
尝试moment('24:00', 'HH:mm'):
const hourTemplate = 'HH:mm';
const getEarliersHour = schedule =>
Object.values(schedule)
.filter(value => value) // no undefined
.map(time => moment(time.startTime, hourTemplate))
.reduce(
(min, curr) => (curr.isBefore(min) ? curr : min),
moment('24:00', hourTemplate) // latest moment
)
.format(hourTemplate);
getEarliersHour(schedule); // 08:00
getEarliersHour({}); // 00:00
添加回答
举报
0/150
提交
取消