Javascript 在时间跨度内对日期进行分组
我试着在一个小时内把日期分组。然而,有些日期似乎被排除在外。我错过了什么?预期结果是Javascript 在时间跨度内对日期进行分组,javascript,Javascript,我试着在一个小时内把日期分组。然而,有些日期似乎被排除在外。我错过了什么?预期结果是[[date1,date2],[date3],[date4]] function groupDates(dates) { var result = []; var intervalStart = dates[0]; var grp = [] dates.forEach((d,i) => { var diff = d.getTime() - intervalStart.getTime(
[[date1,date2],[date3],[date4]]
function groupDates(dates) {
var result = [];
var intervalStart = dates[0];
var grp = []
dates.forEach((d,i) => {
var diff = d.getTime() - intervalStart.getTime()
if(diff/1000/60 <= 60) {
grp.push(d)
} else {
intervalStart = date;
grp = [d]
result.push(grp)
}
})
return result
}
console.log(groupDates([new Date('2017-01-01 17:24'),
new Date('2017-01-01 17:25'),
new Date('2017-01-01 18:26'),
new Date('2017-01-01 19:27')]))
函数组日期(日期){
var结果=[];
var intervalStart=日期[0];
var grp=[]
日期。forEach((d,i)=>{
var diff=d.getTime()-intervalStart.getTime()
if(diff/1000/60问题出在else
块中。您检测到当前组应该结束,但在将其推送到结果
数组之前放弃它
移动result。将(grp)
行推到else
块的顶部,并添加一个额外的result。在循环后推(grp)
,以处理最后一组
function groupDates(dates) {
var result = [];
var intervalStart = dates[0];
var grp = [];
dates.forEach((d,i) => {
var diff = d.getTime() - intervalStart.getTime();
if(diff/1000/60 <= 60) {
grp.push(d);
} else {
result.push(grp);
intervalStart = d;
grp = [d];
}
})
result.push(grp);
return result;
}
console.log(groupDates([new Date('2017-01-01 17:24'),
new Date('2017-01-01 17:25'),
new Date('2017-01-01 18:26'),
new Date('2017-01-01 19:27')]));
函数组日期(日期){
var结果=[];
var intervalStart=日期[0];
var-grp=[];
日期。forEach((d,i)=>{
var diff=d.getTime()-intervalStart.getTime();
if(diff/1000/60问题出在else
块中。您检测到当前组应该结束,但在将其推送到结果
数组之前放弃它
移动result。将(grp)
行推到else
块的顶部,并添加一个额外的result。在循环后推(grp)
,以处理最后一组
function groupDates(dates) {
var result = [];
var intervalStart = dates[0];
var grp = [];
dates.forEach((d,i) => {
var diff = d.getTime() - intervalStart.getTime();
if(diff/1000/60 <= 60) {
grp.push(d);
} else {
result.push(grp);
intervalStart = d;
grp = [d];
}
})
result.push(grp);
return result;
}
console.log(groupDates([new Date('2017-01-01 17:24'),
new Date('2017-01-01 17:25'),
new Date('2017-01-01 18:26'),
new Date('2017-01-01 19:27')]));
函数组日期(日期){
var结果=[];
var intervalStart=日期[0];
var-grp=[];
日期。forEach((d,i)=>{
var diff=d.getTime()-intervalStart.getTime();
如果(diff/1000/60看起来您想要进行小时级别分组,请尝试
var-inputArr=[新日期('2017-01-01 17:24'),
新日期('2017-01-01 17:25'),
新日期('2017-01-01 18:26'),
新日期('2017-01-01 19:27');
var output=Object.values(inputArr.reduce(函数a,b){
var日期=新日期(b);
date.setHours(date.getHours(),0,0,0);
var time=date.getTime()
a[date.getTime()]=a[date.getTime()]||[];
a[date.getTime()].push(b);
返回a;
}, {}));
console.log(输出);
看起来您想进行小时级分组,请尝试
var-inputArr=[新日期('2017-01-01 17:24'),
新日期('2017-01-01 17:25'),
新日期('2017-01-01 18:26'),
新日期('2017-01-01 19:27');
var output=Object.values(inputArr.reduce(函数a,b){
var日期=新日期(b);
date.setHours(date.getHours(),0,0,0);
var time=date.getTime()
a[date.getTime()]=a[date.getTime()]||[];
a[date.getTime()].push(b);
返回a;
}, {}));
console.log(输出);
您的else子句中有错误:intervalStart=d,而不是date。您的else子句中有错误:intervalStart=d,而不是date。