【发布时间】:2014-09-02 10:26:02
【问题描述】:
如果我有一个带有类似这样的商店信息的对象。
storeHours:
0:
day: Sunday
Open: 9:00am
close: 6:00pm
0:
day: Monday
Open: 8:00am
close: 10:00pm
0:
day: Tuesday
Open: 8:00am
close: 10:00pm
0:
day: Wednesday
Open: 8:00am
close: 10:00pm
0:
day: Thursday
Open: 8:00am
close: 10:00pm
0:
day: Friday
Open: 8:00am
close: 10:00pm
0:
day: Saturday
Open: 9:00am
close: 6:00pm
我应该编写什么函数来获得可以给我的输出
simplestoreHours:
0:
Days: Monday-Friday
open: 8:00am
close: 6:00pm
1:
Days: Saturday-Sunday
open: 9:00am
close: 6:00pm
而且所有时间都是格式化的 momentjs 对象,因此可以使用 momentjs。
我最初的想法是做一个循环并让每个元素相互检查。如果开盘和关盘时间一样,那就把天连起来吧,不过我觉得这不是很聪明。
【问题讨论】:
-
嗯:循环元素,您立即将第一个元素添加到对象
list(其中包含天数列表,以及 1 个打开+1 个关闭时间),然后对于循环中的每个连续项目您检查它是否与list中的打开/关闭相同。如果是,则将其添加到该项目,如果不是,则在list中添加新记录 -
@grasshopper,您尝试过任何提供的解决方案吗?如果任何符合您的要求,请将答案标记为正确
-
@Evgeniy 感谢您的评论提醒我,该功能完美运行我在前端使用了一个 ng-switch 来获取“All week”、“weekdays”和“Weekends”等输出
-
Np,很高兴为您提供帮助,如果您需要更新
Days类似 'Saturday-Sunday' -> 'Weekends' 的文本,您可以使用类似var shortStr = { 'Saturday-Sunday' : 'weekends', 'Monday-Friday': 'weekdays','Monday-Sunday': 'All week' }的帮助对象并更新 Days: [.. ] 在最后一次迭代中,例如Days: shortStr[[memo.days[key][0].name, memo.days[key][memo.days[key].length-1 ].name].join('-')]
标签: javascript function object momentjs