javascript - 对多个时间范围进行排序
问题描述
我目前正在处理一个预订应用程序项目。我想根据时间范围对创建的行程进行排序,有人知道如何在 javascript/jquery 中对多个时间范围进行排序吗?
例如,我有 ff。时间范围(我认为每个范围都应该被视为一个对象?);
1:01 pm - 5:00 pm,
7:00 am - 8:00 am,
10:01 am - 1:00 pm,
8:01 am - 10:00 am,
像这样的东西;
7:00 am - 8:00 am,
8:01 am - 10:00 am,
10:01 am - 1:00 pm,
1:01 pm - 5:00 pm
我还没有尝试任何东西,因为我真的不知道从哪里开始。我希望了解它是如何工作的。先感谢您。
我对此进行了一些研究,但我只发现了这些How to sort a array of objects with jquery or javascript,将时间从 Javascript 中的用户输入解析为 Date 对象的最佳方法是什么?. 因此,我正在了解如何对时间进行排序,但我不知道如何在时间范围内应用它。
正如我所说,我真的不知道从哪里开始,所以我还没有考虑它是数组还是对象。它可能是其中之一,我只需要知道它是如何工作的想法。谢谢!
解决方案
使用Moment.js的一种解决方案如下所示。
var timeArr = ["1:01 pm - 5:00 pm", "7:00 am - 8:00 am", "10:01 am - 1:00 pm", "8:01 am - 10:00 am"];
var sortedTime = [];
var tempTimesArr = [];
// Changing start time of the range into timestamp for comparison later and storing index of original time range to use original time range for later
timeArr.forEach(function(singleTime, index){
var tempSingleTimeArr = singleTime.split("-");
tempTimesArr.push({ time: moment(tempSingleTimeArr[0].trim(), "hh:mm a").unix(), index: index });
});
// sorts on the basis of start time of the range
tempTimesArr.sort(function(a, b){ return a.time - b.time; });
// Assign original time range to the new array
tempTimesArr.forEach(function(t){
sortedTime.push(timeArr[t.index])
});
console.log(sortedTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
您可以在此小提琴的控制台上查看排序列表https://jsfiddle.net/nirmalrizal/3z90gpre/27/
推荐阅读
- eloquent - 如何在 laravel 中写哪一年的一对多关系?
- python - 如何在文件名中使用点导入包/文件夹中的模块以进行相对导入?
- jquery - JQuery - 单个元素上的 toggleClass 和 removeClass 功能
- ios - 在 iOS 应用程序 (Swift) 中与电报共享消息
- google-assistant-sdk - 运行仿生的虚拟机上的热词演示段错误
- javascript - 将多个动态数组合并为一个对象数组
- csv - 使用批处理文件从 csv 文件中删除特殊字符
- python - Selenium 和 Python:单击具有“data-disable-with”属性的按钮时遇到问题
- python - Webdriver - 写入文本框中的字符串
- python - Python中的Numpy数组在切片数据时是否默认选择“True”值