gpt4 book ai didi

javascript - 减少没有初始值的空数组

转载 作者:行者123 更新时间:2023-11-29 10:56:16 24 4
gpt4 key购买 nike

我正在使用 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;
}

当我打开日历时,出现此错误:

Uncaught TypeError: Reduce of empty array with no initial value

当列表为空时,我尝试提供 , moment('00:00', 'HH:mm') 作为默认值,但像这样,我的日历总是在午夜开始并忽略剩下的,我想。

-----编辑-----

代码实际上正在执行它的工作,因为午夜早于 08:00,所以它会显示午夜。唯一的事情是仅当列表为空时才显示午夜。

当我使用 moment() 小时时,如何解决这个问题?谢谢!

最佳答案

试试 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

演示:

Edit cold-sunset-oc7fy

关于javascript - 减少没有初始值的空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56596325/

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