【发布时间】:2016-11-08 13:15:28
【问题描述】:
我正在构建可用性日历。这是一个月度视图,天数本质上是一个布尔值,它们可以是可用的,也可以是不可用的。日历上可以存在多个“产品”。比较简单。
我将这些“可用性范围”存储为对象数组以尽可能简洁。因此,单个产品的可能数据集如下所示:
[
{
"startDate": "2016-11-08",
"endDate": "2016-11-08"
},
{
"startDate": "2016-11-11",
"endDate": "2016-11-14"
},
{
"startDate": "2016-11-20",
"endDate": "2016-11-22"
}
]
UI 看起来与这个日历非常相似:
当用户更新他们的可用性时,真正的麻烦就来了。他们可以选择“更新所有”或“更新一个”。例如,如果房间 1 在 1 月 5 日已经不可用,而用户现在想要使从 1 月 1 日到 1 月 10 日的所有房间不可用,我需要从数组中删除 Room 1 January 5th 对象,因为它与新的重叠数据。
此外,我想合并任何连续的时间跨度,例如:
[
{
"startDate": "2016-11-08",
"endDate": "2016-11-08"
},
{
"startDate": "2016-11-09",
"endDate": "2016-11-09"
},
]
应该合并到:
[
{
"startDate": "2016-11-08",
"endDate": "2016-11-09"
},
]
我意识到这是一个相对复杂的问题,但肯定有一个预先存在的解决方案,或者至少有类似的解决方案?
我可以访问 momentJs。
【问题讨论】:
-
你有什么问题?
标签: javascript arrays performance datetime data-structures