Javascript 对多个时间范围进行排序

Javascript 对多个时间范围进行排序,javascript,jquery,Javascript,Jquery,我目前正在做一个预订申请项目。我想根据时间范围对创建的行程进行排序,有人知道如何在javascript/jquery中对多个时间范围进行排序吗 例如,我有ff。时间范围(我认为每个范围应该被视为一个对象?) 我计划有一个按钮,从最早到最晚排序 像这样的东西 7:00 am - 8:00 am, 8:01 am - 10:00 am, 10:01 am - 1:00 pm, 1:01 pm - 5:00 pm 我还没有尝试过任何东西,因为我真的不知道从哪里开始。我希望了解它是如何工作的。提前

我目前正在做一个预订申请项目。我想根据时间范围对创建的行程进行排序,有人知道如何在javascript/jquery中对多个时间范围进行排序吗

例如,我有ff。时间范围(我认为每个范围应该被视为一个对象?)

我计划有一个按钮,从最早到最晚排序

像这样的东西

7:00 am - 8:00 am,
8:01 am - 10:00 am,
10:01 am - 1:00 pm,
1:01 pm - 5:00 pm

我还没有尝试过任何东西,因为我真的不知道从哪里开始。我希望了解它是如何工作的。提前谢谢。


我做了一些研究,我只发现了这些。由于这个原因,我开始了解如何对时间进行排序,但我不知道如何将此应用于时间范围

正如我所说,我真的不知道从哪里开始,所以我还没有考虑它是数组还是对象。它可能是其中之一,我只需要知道它是如何工作的想法。谢谢

一个使用的解决方案如下所示

var timeArr=[“下午1:01-下午5:00”,“上午7:00-上午8:00”,“上午10:01-下午1:00”,“上午8:01-上午10:00”];
var sortedTime=[];
var-testimesar=[];
//将范围的开始时间更改为时间戳以便以后比较,并存储原始时间范围的索引以便以后使用原始时间范围
timeArr.forEach(函数(singleTime,索引){
var tempSingleTimeArr=singleTime.split(“-”);
push({time:moment(tempSingleTimeArr[0].trim(),“hh:mma”).unix(),index:index});
});
//根据范围的开始时间进行排序
sort(函数(a,b){返回a.time-b.time;});
//将原始时间范围指定给新阵列
函数(t){
sortedTime.push(timeArr[t.index])
});
控制台日志(sortedTime)

一个使用的解决方案如下所示

var timeArr=[“下午1:01-下午5:00”,“上午7:00-上午8:00”,“上午10:01-下午1:00”,“上午8:01-上午10:00”];
var sortedTime=[];
var-testimesar=[];
//将范围的开始时间更改为时间戳以便以后比较,并存储原始时间范围的索引以便以后使用原始时间范围
timeArr.forEach(函数(singleTime,索引){
var tempSingleTimeArr=singleTime.split(“-”);
push({time:moment(tempSingleTimeArr[0].trim(),“hh:mma”).unix(),index:index});
});
//根据范围的开始时间进行排序
sort(函数(a,b){返回a.time-b.time;});
//将原始时间范围指定给新阵列
函数(t){
sortedTime.push(timeArr[t.index])
});
控制台日志(sortedTime)

您可以编写自己的排序函数,并根据开始时间和结束时间之间的计算对数组进行排序,以根据时间范围进行排序

var范围=[{
开始时间:新日期(0,0,0,9,30,0),
结束时间:新日期(0,0,0,17,30,0),
},{
开始时间:新日期(0,0,0,7,30,0),
结束时间:新日期(0,0,0,8,30,0),
},{
开始时间:新日期(0,0,0,11,30,0),
结束时间:新日期(0,0,0,15,30,0),
}];
功能比较(a、b){
if(a.endtime-a.starttimeb.endtime-b.starttime)
返回1;
返回0;
}
排序(比较);

console.log(ranges)
您可以编写自己的排序函数,并根据开始时间和结束时间之间的计算对数组进行排序,以根据时间范围对其进行排序

var范围=[{
开始时间:新日期(0,0,0,9,30,0),
结束时间:新日期(0,0,0,17,30,0),
},{
开始时间:新日期(0,0,0,7,30,0),
结束时间:新日期(0,0,0,8,30,0),
},{
开始时间:新日期(0,0,0,11,30,0),
结束时间:新日期(0,0,0,15,30,0),
}];
功能比较(a、b){
if(a.endtime-a.starttimeb.endtime-b.starttime)
返回1;
返回0;
}
排序(比较);

console.log(ranges)
我修改了@MarkBaijens答案,因为它只对
开始时间进行排序。如果有相同的多个
starttime
和不同的
endtime
,则排序不正确

var timeArr=[“下午1:01-下午5:00”,“上午7:00-上午8:00”,“上午10:01-下午1:00”,“上午7:00-上午8:30”,“上午8:01-上午10:00”,“上午7:00-上午7:50”];
var sortedTime=[];
var-testimesar=[];
//将范围的开始时间更改为时间戳以便以后比较,并存储原始时间范围的索引以便以后使用原始时间范围
timeArr.forEach(函数(singleTime,索引){
var tempSingleTimeArr=singleTime.split(“-”);
testimesar.push({startTime:moment(tempSingleTimeArr[0].trim(),“hh:mm a”).unix(),endTime:moment(tempSingleTimeArr[1].trim(),“hh:mm a”).unix(),index:index});
});
//根据范围的开始时间进行排序
排序(函数(a,b){return((a.startTime-b.startTime)==0)?(a.endTime-b.endTime):(a.startTime-b.startTime);});
//将原始时间范围指定给新阵列
函数(t){
sortedTime.push(timeArr[t.index])
});
控制台日志(sortedTime)

我修改了@MarkBaijens的答案,因为它只对
开始时间进行排序。如果有相同的多个
starttime
和不同的
endtime
,则排序不正确

var timeArr=[“下午1:01-下午5:00”,“上午7:00-上午8:00”,“上午10:01-下午1:00”,“上午7:00-上午8:30”,“上午8:01-上午10:00”,“上午7:00-上午7:50”];
var sortedTime=[];
var-testimesar=[];
//将范围的开始时间更改为时间戳以便以后比较,并存储原始时间范围的索引以便以后使用原始时间范围
timeArr.forEach(函数(singleTime,索引){
var tempSingleTimeArr=singleTime.split(“-”);
testimesar.push({startTime:moment(tempSingleTimeArr[0].trim(),“hh:mm a”).unix(),endTime:moment(tempSingleTimeArr[1].trim(),“hh:mm a”).unix(),index:index});
});
//根据范围的开始时间进行排序
testimesarr.sort(函数(a,b){
7:00 am - 8:00 am,
8:01 am - 10:00 am,
10:01 am - 1:00 pm,
1:01 pm - 5:00 pm