【发布时间】:2020-02-02 11:07:31
【问题描述】:
我有一个这样的对象数组
const timings = [{
monday: { from: "12:00", to: "13:00" },
tuesday: { from: "11:00", to: "13:00" },
thursday: { from: "11:00", to: "13:00" },
friday: { from: "11:00", to: "13:00" },
saturday: { from: "11:00", to: "13:00" },
},
{
monday: { from: "10:00", to: "17:00" },
tuesday: { from: "09:00", to: "10:00" },
thursday: { from: "05:00", to: "13:00" },
friday: { from: "02:00", to: "13:30" },
saturday: { from: "11:00", to: "13:00" },
},
{
monday: { from: "13:00", to: "14:20" },
tuesday: { from: "11:00", to: "13:00" },
thursday: { from: "11:00", to: "13:00" },
friday: { from: "11:00", to: "13:00" },
saturday: { from: "11:00", to: "13:00" },
},
{
monday: { from: "12:00", to: "13:00" },
tuesday: { from: "11:00", to: "13:40" },
thursday: { from: "11:00", to: "16:00" },
friday: { from: "11:00", to: "13:00" },
saturday: { from: "11:00", to: "13:00" },
sunday: {from: "00:00", to: "23:59"}
},
]
我希望输出包含数组中一天中最低和最高的时间
例如输出:
{
monday: { from: "10:00", to: "17:00" },
tuesday: { from: "09:00", to: "13:40" },
thursday: { from: "05:00", to: "16:00" },
friday: { from: "02:00", to: "13:30" },
saturday: { from: "11:00", to: "13:00" },
sunday: {from: "00:00", to: "23:59"}
}
我想出了一个很长的解决方案,但它很长而且效率不高。
我的解决方案
mondayFrom = timings.map(d => (d.monday && d.monday.from))
mondayTo = timings.map(d => (d.monday && d.monday.to))
tuesdayFrom = timings.map(d => (d.tuesday && d.tuesday.to))
// .... rest of the days
这将生成数组,我可以从中找到最小值和最大值,但我觉得它的逻辑很糟糕。
如果有更好的方法,请告诉我。 谢谢
【问题讨论】:
-
我会使用
reduce -
请通读help center,尤其是How do I ask a good question?,你最好的办法是做你的研究,search关于SO的相关主题,然后试一试。 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到困难的地方。人们会很乐意提供帮助。
-
我可以知道我在这里违反了什么规则吗?
-
好吧,这取决于这一系列时间是否会改变?多常?用户说如何改变它?你还需要对时间做点别的吗?
标签: javascript node.js momentjs