javascript - 按升序排列天数

标签 javascript node.js algorithm sorting

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

["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/

相关文章:

node.js - 如何在 Windows IIS 中托管 React.js 和 Node.js 应用程序?

algorithm - 寻找距离棋盘中心最远的移动 - python 2

javascript - discord.js v13 permissions.has() 函数不工作(TypeError : Cannot read properties of undefined (reading 'has' ))

javascript - 如何使用 Javascript 和 JSON 显示图像

javascript - 使用脚本加载器注入(inject)脚本访问全局变量

javascript - Phantomjs 进程间通信

javascript - 如何使用变量作为字段键获取 Meteor 集合字段值

C++ 哈希搜索函数卡在无休止的 "else"和 "while"循环中

algorithm - 就范围大小而言,调用 get(Range) 的大 O 性能是什么?为什么?

c# - 为Windows 8应用选择哪种语言(含义是什么)?