如何切割这个数组?

        var curhour = new Date().getHours();
        var hourList = ['8:00-9:00', '9:00-10:00', '10:00-11:00', '11:00-12:00', '12:00-13:00', '13:00-14:00', '14:00-15:00', '15:00-16:00', '16:00-17:00', '17:00-18:00', '18:00-19:00','19:00-20:00']

一个预约服务的需求,怎么比较如何返回当前时间(12点)两个小时以后的数组,接受预约服务的营业时间为8-19点;

['14:00-15:00', '15:00-16:00', '16:00-17:00', '17:00-18:00', '18:00-19:00','19:00-20:00']

阅读 3k
5 个回答
        var curhour = new Date().getHours();
        var hourList = ['8:00-9:00', '9:00-10:00', '10:00-11:00', '11:00-12:00', '12:00-13:00', '13:00-14:00', '14:00-15:00', '15:00-16:00', '16:00-17:00', '17:00-18:00', '18:00-19:00','19:00-20:00'];
        var resultHourList;
        var foundIndex=hourList.findIndex(function(item){
            var start=parseInt(item.split("-")[0].split(":")[0],10);
            if(start===curhour){
                return true;
            }else{
                return false;
            }
        });
        
        if(foundIndex!=-1){
            resultHourList=hourList.splice(foundIndex);
        }
        
        console.log(resultHourList);

或者

        var curhour = new Date().getHours();
        var hourList = ['8:00-9:00', '9:00-10:00', '10:00-11:00', '11:00-12:00', '12:00-13:00', '13:00-14:00', '14:00-15:00', '15:00-16:00', '16:00-17:00', '17:00-18:00', '18:00-19:00','19:00-20:00'];
        var resultHourList;
        var firstHour=parseInt(hourList[0].split("-")[0].split(":")[0],10);
        var offset=curhour-firstHour;
        resultHourList=hourList.splice(offset);
        console.log(resultHourList);
var curhour = new Date().getHours();
var hourList = ['8:00-9:00', '9:00-10:00', '10:00-11:00', '11:00-12:00', '12:00-13:00', '13:00-14:00', '14:00-15:00', '15:00-16:00', '16:00-17:00', '17:00-18:00', '18:00-19:00', '19:00-20:00'];
hourList=hourList.filter(function(item, i) {
    return +item.slice(0, 2) > curhour
})
        $hourList = ['8:00-9:00', '9:00-10:00', '10:00-11:00', '11:00-12:00', '12:00-13:00', '13:00-14:00', '14:00-15:00', '15:00-16:00', '16:00-17:00', '17:00-18:00', '18:00-19:00','19:00-20:00'];
        foreach ($hourList as $list) {
            $start_hour = explode(":", $list);
            if($start_hour[0] >= "14") {
                var_dump($list);
            }
        }
        

能用es6么?
如果用es6的写法。

    var curhour = new Date().getHours();
    var hourList = ['8:00-9:00', '9:00-10:00', '10:00-11:00', '11:00-12:00', '12:00-13:00', '13:00-14:00', '14:00-15:00', '15:00-16:00', '16:00-17:00', '17:00-18:00', '18:00-19:00','19:00-20:00']
    hourList.filter((time)=>{
        let timeRange= time.split('-');
        return timeRange[0].split(':')[0]*1>(curhour+2)
   })
        

不能的话 你就吧filter换成for 或while 或者 forEach

我也写了一个。要是有哪里不好,请指正。

var isLegitimacy = function(now){
        
        return function(item){
        
            var beginTimeStr = item.split("-")[0];
            var beginTimeNum = parseInt(beginTimeStr,10);

            return ((beginTimeNum >= now+2) && (beginTimeNum < 20)) ? true : false;
        };
    };

var filterFn = function(hourList,isLegitimacy){
        return hourList.filter(isLegitimacy);
    }; 

最后调用

filterFn(hourList,isLegitimacy(curhour));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题