我有一个包含唯一的日期名称字符串的数组。日期名称将以随机顺序排列。 -例如:
["Sun 10am", "Sat 4pm", "Sat 10am", "Wed 3pm", "Sun 4pm"]
我想使用javascript对该数组进行排序,以便它以升序排列。
["Wed 3pm", "Sat 10am", "Sat 4pm", "Sun 10am", "Sun 4pm"]
有人可以建议最好的方法吗?
谢谢
最佳答案
您可以结合使用map
和sort
。在这里,我将时间转换为24小时格式,以便于比较数字。
var array = ["Sun 10am", "Sat 4pm", "Sat 10am", "Wed 3pm", "Sun 4pm"],
mapping = { Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6, Sun: 7 },
result = array
.map((time, i) => {
const hour = parseInt(time.split(" ")[1], 10);
const hour24 = time.indexOf("am") > -1 ? hour : hour + 12;
return {
index: i,
day: mapping[time.split(" ")[0]],
hour24
}
})
.sort((a, b) => a.day - b.day || a.hour24 - b.hour24)
.map(({
index
}) => array[index]);
console.log(result);
关于javascript - 按升序对天数数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56320574/