我有一个包含唯一的日期名称字符串的数组。日期名称将以随机顺序排列。 -例如:

["Sun 10am", "Sat 4pm", "Sat 10am", "Wed 3pm", "Sun 4pm"]

我想使用javascript对该数组进行排序,以便它以升序排列。
["Wed 3pm", "Sat 10am", "Sat 4pm", "Sun 10am", "Sun 4pm"]

有人可以建议最好的方法吗?

谢谢

最佳答案

您可以结合使用mapsort。在这里,我将时间转换为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/

10-15 03:22