我有一个可变日期列表,我希望将它们组合在一起,最好是在javascript中。
即
2014-08-12
2014-08-10
2014-07-28
2014-07-27
2014-01-27
2013-04-27
2003-02-12
此日期列表可以是完全动态的,但这是一个示例结果集。
任何人都可以想到一种优雅的方式来将被认为彼此“接近”的日期分组在一起,在这种情况下将是:
2014-08-12
2014-08-10
2014-07-28
2014-07-27
2014-01-27
2013-04-27
2003-02-12
答案 0 :(得分:0)
执行此操作的方法是:
.getTime()
这方面的一个例子:
var dates = ['2014-08-12', '2014-08-10', '2014-07-28', '2014-07-27', '2014-01-27', '2013-04-27', '2003-02-12'],
groups = [],
last = 0
dates.map(function (each) {
return new Date(each).getTime() // 1.
}).sort(function (a, b) {
return b-a // 2.
}).forEach(function (each) {
if (Math.abs(each-last) > 1e10) { // 1e10 ms = 116 days
groups.push([]) // 3.
}
groups[groups.length-1].push(each)
last = each
})
groups.map(function (dates) {
return dates.map(function (each) {
return new Date(each).toISOString().substr(0, 10) // 4.
}).join('\n')
}).join('\n\n')
您可以将1e10
值调整为nearby dates
对您的应用程序的意义