美文网首页程序员
Amazing JavaScript : 快速筛选重复日期

Amazing JavaScript : 快速筛选重复日期

作者: 积木jimu | 来源:发表于2016-04-16 21:26 被阅读0次

在我们日常做项目中会碰到多个期间情况下,快速筛选出有重复期间的问题。

初次遇到这个问题的想法是

比较两条为一组进行比较。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>

简陋之言,忘君勿喷。

相关文章

网友评论

    本文标题:Amazing JavaScript : 快速筛选重复日期

    本文链接:https://www.haomeiwen.com/subject/rpkolttx.html