我有以下
var dates = [
"2017-09-11 13:30:45",
"2017-09-11 14:20:00",
"2017-09-11 15:00:00"
]
我要删除中间日期,因为它与上一个日期太近(不到一小时)。一旦删除,第三个应该留在那里,因为它与上一个(它现在是第一个)不太接近
我知道如何转换日期,我知道如何进行基本的for循环以查找要删除的日期,并且我知道如何删除日期。
我的问题是:有没有班轮可以为我解决这个问题?我正在翻阅Lodash,但找不到任何
说明:
数组总是排序的。该功能应对照前一个元素验证当前元素。如果当前元素被删除,则下一个元素应与被删除的元素进行比较
最佳答案
不是单线的,但时间不长:
let lastDate = null;
dates = dates.filter(date => {
date = parseDate(date);
if (!lastDate || date - lastDate >= ONE_HOUR) {
lastDate = date;
return true;
}
});
let dates = [
"2017-09-11 13:30:45",
"2017-09-11 14:20:00",
"2017-09-11 15:00:00"
];
const ONE_HOUR = 1000 * 60 * 60;
let lastDate = null;
dates = dates.filter(date => {
date = parseDate(date);
if (!lastDate || date - lastDate >= ONE_HOUR) {
lastDate = date;
return true;
}
});
console.log(dates);
function parseDate(s) {
return Date.parse(s.replace(' ', 'T'));
}