Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将重叠时间段的集合合并到新的时间段中_Javascript_Node.js_Date_Momentjs - Fatal编程技术网

Javascript 将重叠时间段的集合合并到新的时间段中

Javascript 将重叠时间段的集合合并到新的时间段中,javascript,node.js,date,momentjs,Javascript,Node.js,Date,Momentjs,在node.js中,将多组给定时间段合并为一组表示重叠时间段的方法是什么?期间提供为开始日和结束日 4 sets of time intervals (days): (-------------------------) (---------) (---) (------------------------) (-------) (--------

在node.js中,将多组给定时间段合并为一组表示重叠时间段的方法是什么?期间提供为开始日和结束日

4 sets of time intervals (days):

 (-------------------------)         (---------)                (---)
                       (------------------------)           (-------)
                 (--------)            (-------)                (----)
       (---------------------)     (---------)     (---)      (-----------)

New set representing overlaps:

                       (--)            (-----)                  (---)

将所有开始和结束时间戳合并到一个列表中(存储时间戳以及时间戳是开始还是结束)-简单地合并,或者如果有很多集合,则使用

  (-------------------------)         (---------)                (---)
                        (------------------------)           (-------)
                  (--------)            (-------)                (----)
        (---------------------)     (---------)     (---)      (-----------)

然后随时间使用简单的递增/递减扫描:

0 -                                              ----   ------             ---
1 (------                     -------           -)  (---)    (--      -----)
2       (----------         --)     (--         )              (-    -)
3                 (------  -)         (--     --)                (   )
4                       (--)            (-----)                  (---)
并收集计数最大的时间间隔

                        ^^^^^           ^^^^^^^                  ^^^^^

将所有开始和结束时间戳合并到一个列表中(存储时间戳以及时间戳是开始还是结束)-简单地合并,或者如果有很多集合,则使用

  (-------------------------)         (---------)                (---)
                        (------------------------)           (-------)
                  (--------)            (-------)                (----)
        (---------------------)     (---------)     (---)      (-----------)

然后随时间使用简单的递增/递减扫描:

0 -                                              ----   ------             ---
1 (------                     -------           -)  (---)    (--      -----)
2       (----------         --)     (--         )              (-    -)
3                 (------  -)         (--     --)                (   )
4                       (--)            (-----)                  (---)
并收集计数最大的时间间隔

                        ^^^^^           ^^^^^^^                  ^^^^^

到目前为止您尝试了什么?我将时间段表示为一个数组,每个项目都有一个特定的日期:
[“20170714”,“20170715”]
,然后一次将两个数组相交(请参阅)。一旦您合并了所有集合,您就必须找到一种将数组转换为实际时间跨度的方法。@JuanStiza Lodash
intersect
并不是我们所需要的here@Bergi你说得对!似乎还有一个附加条件,即每套中都必须有重叠。如果您提供示例输入和输出,以及您尝试过的内容,将非常有帮助。目前,这是一个关于通用算法的问题,它不是特定于任何特定语言或库的。到目前为止您尝试了什么?我将时间段表示为一个数组,每个项目都有一个特定的日期:
[“20170714”,“20170715”]
,然后一次将两个数组相交(请参阅)。一旦您合并了所有集合,您就必须找到一种将数组转换为实际时间跨度的方法。@JuanStiza Lodash
intersect
并不是我们所需要的here@Bergi你说得对!似乎还有一个附加条件,即每套中都必须有重叠。如果您提供示例输入和输出,以及您尝试过的内容,将非常有帮助。目前,这是一个关于通用算法的问题,它不是特定于任何特定语言或库的。