鍍金池/ 問(wèn)答/HTML/ 當(dāng)兩個(gè)for循環(huán)嵌套的時(shí)候,如何運(yùn)行的

當(dāng)兩個(gè)for循環(huán)嵌套的時(shí)候,如何運(yùn)行的

后端給我了一個(gè)開(kāi)始時(shí)間和一個(gè)結(jié)束時(shí)間,我需要判斷是否在這個(gè)時(shí)間段內(nèi)。首先開(kāi)始時(shí)間和結(jié)束時(shí)間可能會(huì)是多個(gè)數(shù)組,時(shí)間段也會(huì)是多個(gè)數(shù)據(jù)。

數(shù)據(jù)結(jié)構(gòu)如下
{"code":"0","data":{"nowDate":"2018-09-03 14:25:57","isCanUpdate":"0","list":[{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-17"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-18"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-19"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-20"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-21"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-22"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-23"}]},"info":"成功"}

這是我處理過(guò)的數(shù)據(jù)

computed:{
              newTimesList(){
                  var day = this.childmessage.day
                  var newTimesList=this.initTimesList.map(function(item) {
                      return +new Date((day+" "+item).replace(/-/g,"/"));
                  })
                  return newTimesList
              },
              getTime(){
                  var timeLength = this.times.length;
                  var timesArray = [];
                  for (var i = 0; i < timeLength; i++) {
                      var startTime = this.day+" "+this.times[i].startTime;
                      var endTime = this.day+" "+this.times[i].endTime;
                      var startTimeStr = +new Date(startTime.replace(/-/g,"/"));
                      var endTimeStr = +new Date(endTime.replace(/-/g,"/"));
                      var timesList = {
                          startTimeStr:startTimeStr,
                          endTimeStr : endTimeStr
                      }
                      timesArray.push(timesList)
                      return timesArray
                  }
              },
              hasArrange(){
                  var activeArray = []
                  for (var i = 0; i < this.getTime.length; i++) {
                      for (var j = 0; j < this.newTimesList.length; j++) {
                          // 為什么全是false
                          // if (this.newTimesList[j]>this.getTime[i]["startTimeStr"]&&this.newTimesList[j]<this.getTime[i]["endTimeStr"]) {
                          //     var thisState = "true"
                          //     activeArray.push(thisState)
                          // }else{
                          //     var thisState = "false"
                          //     activeArray.push(thisState)
                          // }
                      }
                  }
                  return activeArray
              }

我想根據(jù)最后這個(gè)數(shù)據(jù)的下標(biāo)判斷有沒(méi)有active這個(gè)類

回答
編輯回答
初心

//擴(kuò)展日期格式化(yyyy-MM-dd hh:mm:ss)
function format(date, format) {
var opt = {

  "M+" : date.getMonth()+1,
  "d+" : date.getDate(),
  "h+" : date.getHours(),
  "m+" : date.getMinutes(),
  "s+" : date.getSeconds()
};

if(new RegExp(/(y+)/).test(format)) {
  format = format.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
};

for(var key in opt) {
  if(new RegExp("("+ key +")").test(format)) {
    format = format.replace(RegExp.$1, RegExp.$1.length==1 ? opt[key] : ("00"+ opt[key]).substr((""+ opt[key]).length));
  }
};
return format;

}
//注:res.data為后臺(tái)返回的數(shù)據(jù),也就是你提供的數(shù)據(jù)。具體表達(dá)按自己的。
var data = res.data.data;
var nowDate = data.nowDate,

arrList = data.list;

function isInTime(nowDate, arrList) {

var isInTime = false,
    nowDay = format(new Date(nowDate), "yyyy-MM-dd"),
    nowTime = format(new Date(nowDate), "hh:mm:ss");
for(var i = 0; i < arrList.length; i++) {
    var day = arrList[i].day;
    if(nowDay == day) {
        var times = arrList[i].times;
        for(var j = 0; j < times.length; j++) {
            var startTime = times[j].startTime + ":00",
                endTime = times[j].endTime + ":00";
            if(nowTime >= startTime && nowTime <= endTime) {
                isInTime = true;
            }
        }
    }
}
return isInTime;

}

2017年12月11日 23:16
編輯回答
解夏

如果看你的示例數(shù)據(jù),那應(yīng)該可以認(rèn)為list返回的應(yīng)該是近一周的工作時(shí)間。
那么你的需求應(yīng)該是要判斷nowDate是否在工作時(shí)間范圍內(nèi)。
不知道我這么理解對(duì)不對(duì)。
如果按照這么理解來(lái)做的話,應(yīng)該可以按照如下代碼處理:

var data={"code":"0","data":{"nowDate":"2018-09-03 14:25:57","isCanUpdate":"0","list":[{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-17"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-18"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-19"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-20"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-21"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-22"},{"times":[{"startTime":"09:00","endTime":"21:30"}],"day":"2018-09-23"}]},"info":"成功"};

function validate(data){

var nowDay=data.data.nowDate.substr(0,10);
var nowTime=parseInt(data.data.nowDate.substr(11).replace(/:/g,""));
for(var i=0;i<data.length;i++){
    var item=data.data.list[i];
    if(item.day==nowDay){
        for(var j =0;j< item.times.length;j++){
            var item2=item.times[i];
            if(nowTime>=parseInt(item2.startTime.replace(/:/g,""))*100&&nowTime<=parseInt(item2.endTime.replace(/:/g,""))*100){
                return true;
            }
        }
        //return false; //如果日期唯一可以直接在此處直接返回false
    }

}
return false;

}

2018年7月21日 20:35