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>

简陋之言,忘君勿喷。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前几天我一大学同学家娃娃,本来很正常的,突然翻白眼,全身强直抽搐,就昏过去。事发突然,娃娃她奶奶吓得不知所措了。我...
    中医李奇飞阅读 4,050评论 1 1

友情链接更多精彩内容