表單里要提交多段時間,要檢驗每段時間不能有互相重合的時間段
多段時間原始格式如下(時、分、秒轉化為秒,或者時間戳):
var timeArray = [ {start:"27890",off:"28790"}, {start:"25530",off:"25556"}, {start:"27000",off:"31589"}, {start:"25550",off:"25560"}, ]1、數組比較法 1、將多段時間的開始時間和結束時間分別組成兩個數組
var minTimes = [] var maxTimes = [] timeArray.map((v)=>{ minTimes.push(v.start) //多段開始時間的數組 minTimes = ["27890", "25530", "27000", "25550"] }) timeArray.map((v)=>{ maxTimes.push(v.off) //多段結束時間的數組 maxTimes = ["28790", "25556", "31589", "25560"] })2、將minTimes和maxTimes數組元素分別從大到小排序
相當于時間段從小到大重排
minTimes.sort() // minTimes = ?["25530", "25550", "27000", "27890"] maxTimes.sort() // maxTimes = ?["25556", "25560", "28790", "31589"]3、比較maxTimes[index]和minTimes[index+1],即看結束時間是否永遠比開始時間小
從index=1開始比較,如果maxTimes[index]的值比minTimes[index+1]小,說明時間段不會重合,以此類推比較,如果沒有出現maxTimes[index] > minTimes[inex+1]的情況,則沒有時間段發生重合,如果存在一次maxTimes[index] > minTimes[inex+1],則時間段重合
2、對象比較法 1、timeArray的每一項按開始時間從小到大排序保證每段時間的開始時間都比上一段時間開始時間小
var temp for(var i = 0; i < timeArray.length - 1; i++) { for(var j = i + 1; j < timeArray.length; j++){ if(timeArray[i].start > timeArray[j].start){ temp = timeArray[i] timeArray[i] = timeArray[j] timeArray[j] = temp } } } //timeArray = [ // {start: "25530", off: "25556"}, // {start: "25550", off: "25560"}, // {start: "27000", off: "31589"}, // {start: "27890", off: "28790"} // ]2、前一段的結束時間與后一段的結束時間比較,若后一段的結束時間永遠小于前一段的開始時間,則時間算段沒有沖突
好處:能知道沖突的時間段是哪幾段
for(var i = 0;i總結 第一種方法是將時間段都拆分了,相當于將多段時間從小到大從新排序,但是沒有很嚴謹的邏輯證明這種方法是正確的,但暫時也想不出這種方法存在錯誤的反例
第二種方法相當于把時間段按照開始時間從新排序,時間段并沒有被拆分,如果時間段不沖突,那么肯定有每一段的前一段結束時間小于當前段的開始時間,反之,如果當,每一段當前段的開始時間都小于前一段的結束時間,則時間段不沖突,是充分必要條件,所以我覺得第二種方法有較嚴謹的邏輯性,可采用。
以上兩種方法的前提是,保證每一段的結束時間都要比開始時間大
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/109315.html
摘要:背景單頁面應用使用百度統計需要使用和用來統計每個頁面的訪問應用里如果同時埋放多段百度統計的訪問分析代碼又需要使用。但是如果單頁面應用里又同時埋放多段百度統計的訪問分析代碼該如何處理呢引入方式直接呈上代碼,注意事項都寫在注釋里了。 背景 單頁面應用使用百度統計需要使用_trackPageview和_setAutoPageview API用來統計每個頁面的訪問, 應用里如果同時埋放多段百度...
摘要:當我們第一次或者打開百度,我們會發現加載的請求響應字段如下由于是第一次或者強制刷新打開的,所以瀏覽器會忽略緩存,直接向服務器發送請求加載資源,圖中畫框的那幾個字段是與緩存相關的。 合理利用緩存概述:本章主要討論了兩方面的內容。1. 瀏覽器緩存機制。 2. web實踐中如何有效利用這些緩存瀏覽器緩存機制 作為web開發人員經常遇到的問題之一就是我明明修復并且部署了這個BUG為什么線上有的...
ArcGis for JavaScript SDK 作者:BLUE日期:2019-07-09 描述:arcgis for js 開發包,基于arcgis for js 3.9 點擊【這里】下載SDK 該開發包是基于arcgis for javascript 3.9,是對原始API的一個擴充,原始API正常使用,該SDK僅封裝了開發過程中常用的方法,開發包內使用瓦片下載的方式對全國天地圖底圖進行加...
摘要:新增的是個強大的功能,估計大家平時都會用到,只是頻率不高,偶爾用它合成圖片,但是如果不進行封裝的話,代碼會很亂,所以對常用的畫圖繪制文字保存功能進行了封裝,目前還比較滿意,能夠快速完成繪圖任務,從容應對需求變更,只需進行簡單配置即可。 Html5新增的canvas是個強大的功能, 估計大家平時都會用到,只是頻率不高,偶爾用它合成圖片,但是如果不進行封裝的話,代碼會很亂,所以對canva...
閱讀 2090·2021-11-24 09:39
閱讀 1558·2021-10-11 10:59
閱讀 2502·2021-09-24 10:28
閱讀 3379·2021-09-08 09:45
閱讀 1273·2021-09-07 10:06
閱讀 1670·2019-08-30 15:53
閱讀 2065·2019-08-30 15:53
閱讀 1424·2019-08-30 15:53