我有一个数组,其中包含唯一的日期名称字符串。日期名称将按随机顺序排列。 - 例如:
["Sun 10am", "Sat 4pm", "Sat 10am", "Wed 3pm", "Sun 4pm"]
我想使用 javascript 对该数组进行排序,使其按升序排列。
["Wed 3pm", "Sat 10am", "Sat 4pm", "Sun 10am", "Sun 4pm"]
有人可以建议最好的方法吗?
谢谢
最佳答案
您可以创建一个以日期名称作为键和值从 1 增加到 7 的对象。
创建一个辅助函数,它将字符串的第二部分即
3pm,10am..
作为输入,如果pm<,则将
12
添加到结果中- 同时将结果除以
24
,因此第一个sort
应该在几天内发生。 - 使用
sort()
函数并将每个值的时间索引(始终小于 1)添加到日期索引(1,2,3...
) 并为这两个值减去它。
const arr = ["Sun 10am", "Sat 4pm", "Sat 10am", "Wed 3pm", "Sun 4pm"];
function getTime(str){
let time = str.slice(0,-2);
let isAm = str.includes('am');
return (isAm ? +time : +time + 12)/24
}
function sortTime(arr){
let days = {
Mon:1,
Tue:2,
Wed:3,
Thur:4,
Fri:5,
Sat:6,
Sun:7
}
return arr.slice().sort((a,b) => {
let [day1,time1] = a.split(' ');
let [day2,time2] = b.split(' ');
return (days[day1] + getTime(time1)) - (days[day2] + getTime(time2))
})
}
console.log(sortTime(arr))
关于javascript - 按升序排列天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320574/