Amazing JavaScript : 快速篩選重復日期

在我們日常做項目中會碰到多個期間情況下,快速篩選出有重復期間的問題。

初次遇到這個問題的想法是

比較兩條為一組進行比較。12-23-34-nn。后來感覺路子行不通。一個同事正好有過類似經驗。

解決方案是

每組期間都有個共同的屬性,開始日和結束日。

先求出所有期間的最大開始日

在求出最小結束日

如果這個時候最小結束日依然大于最大開始日,就證明有重復期間。反之沒有。

<script type="text/javascript">
        var arrayList = new Array();
        function TestYmd(startYmd,endYmd){
            this.startYmd = startYmd;
            this.endYmd = endYmd;
            }
        arrayList.push(new TestYmd('20160101','20161001'));
        arrayList.push(new TestYmd('20160401','20161101'));
        arrayList.push(new TestYmd('20160501','20160901'));
        arrayList.push(new TestYmd('20160201','20161201'));

// 按結束日降序排列        
arrayList.sort(function (x, y) {
    return x.EndYmd.localeCompare(y.EndYmd);
});

// 取得最小結束日期
var minEndYmd = arrayList[0].EndYmd;

// 按開始日升序序排列        
arrayList.sort(function (x, y) {
    return x.StartYmd - y.StartYmd; 
});

// 取得最大開始日期
var maxStartYmd = arrayList[0].StartYmd;

if(minEndYmd > maxStartYmd )
{
    // 有重復期間
}
</script>

簡陋之言,忘君勿噴。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前幾天我一大學同學家娃娃,本來很正常的,突然翻白眼,全身強直抽搐,就昏過去。事發突然,娃娃她奶奶嚇得不知所措了。我...
    中醫李奇飛閱讀 746評論 1 1