减少没有初始值的空数组

我正在使用 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() 小时时如何解决此问题?谢谢!


海绵宝宝撒
浏览 94回答 1
1回答

互换的青春

尝试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:00getEarliersHour({});                        // 00:00
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript