我需要排序按以下顺序消息:收到Today
,Yesterday
,并且This Week
算法对消息进行分组按时间
规则This Week
:开始于最近的星期一 - 不包括Today
或Yesterday
含义:
如果Today
是星期日,Yesterday
是星期六,This Week
是星期五,星期四,星期三,星期二和星期一
如果Today
是星期四,Yesterday
是星期三,This Week
是周二和周一
但如果Today
是星期二,Yesterday
是星期一 - This Week
无天
如果Today
是星期一,Yesterday
是星期天 - - This Week
没有日子
我一直在努力找出如何解决This Week
。我不断收到错误,有这么多的优势情况下需要考虑的。
这里是我的尝试:
var currentDate = new Date()
var currentMonth = currentDate.getMonth()+1
var currentYear = currentDate.getFullYear()
var currentDayofMonth = currentDate.getDate()
var currentDayofWeek = currentDate.getDay()
messages.forEach((message, index) => {
var date = message.date.substring(0, 10).replace(/-/g, '\/')
var messageDate = new Date(date)
var messageMonth = messageDate.getMonth()+1;
var messageYear = messageDate.getFullYear();
var messageDayOfMonth = messageDate.getDate();
var messageDayOfWeek = messageDate.getDay();
//TODAY
if(currentDayofMonth == messageDayOfMonth && currentMonth == messageMonth && currentYear == messageYear) {
messageTypeList["Today"].push(message)
return
}
//YESTERDAY
if(currentDayofMonth == messageDayOfMonth+1 && currentMonth == messageMonth && currentYear == messageYear) {
messageTypeList["Yesterday"].push(message)
return
}
//THIS WEEK
if(currentDayofWeek != 1 && currentDayofWeek != 2 && currentMonth == messageMonth && currentYear == messageYear) {
messageTypeList["This Week"].push(message)
return
}
})
任何想法?
注意
我相信我有一个边缘情况的错误在Yesterday
- 例如,如果Today
是5月1日,就不算数4月30日为Yesterday
,因为下个月是不同
非常感谢。非常有帮助和聪明的方法.. 但是,如果今天是27,昨天是26,那么这个星期应该是25和24.看起来你的尝试可能有一个错误? – user2456977
你有不同的输出吗?我添加了脚本给我的输出。 – trincot
奇怪,当我运行的代码片段,我得到这样的输出: '{ “今日”:[{ “日期”: “2017年4月26日” },{ “日期”:“2017年-04-27" } ], “昨天”:[{ “日期”: “2017年4月25日” } ], “本周”:[{ “日期”:“ 2017-04-24“ } ] }' – user2456977