请问怎么取最大值和最小值

image.png["14:00", "14:30", "15:00", "15:30"]

阅读 2.7k
5 个回答

方法有点傻,简单理解成时间排序吧,把小时和分钟带入到1970年1月1日后 获取毫秒数 再去排序即可拿到最大或者最小,期待有更好的解决方法哈哈

let timeArr = ["14:30","15:00","14:00", "15:30"]

timeArr.sort((a,b)=>{
    let timeA = new Date(`1970/01/01 ${a}:00`).getTime()
    let timeB = new Date(`1970/01/01 ${b}:00`).getTime()
    return timeA - timeB
})

输出:
['14:00', '14:30', '15:00', '15:30']

不确定你的数据格式究竟如何,单纯的比较字符串可能结果并非你想要的,因为字符串比较的原理是逐位比较、有一位大就算整个字符串大了,但从数值上看可能并非如此。

'2:00' > '10:00'; // true
'100:00' > '20:00'; // false

你可以在 @hfhan 的答案基础上再做个转换,把字符串转化为数值(看起来就是“分:秒”格式的,可以按冒号分割一下、前面 ×60 再加后面的就好)后再比较。

let [minute, second] = str.split(':');
let num = minute * 60 + +second;

如果时间格式一样,就可以直接用大于小于号去判断大小

let max = ["14:00", "14:30", "15:00", "15:30"].reduce((max, item) => max > item ? max : item)

let min = ["14:00", "14:30", "15:00", "15:30"].reduce((min, item) => min < item ? min : item)

这个的方式还真不少,抛砖引玉两种
1.排序后取第一个合最后一个
2.统一转换为分钟再比较

先把时间转时间戳,拿到最大值最小值再时间戳转时间

/**
 * [MaxArray 数组最大值]
 */
export function MaxArray(arr) {
  return Math.max.apply(null, arr)
}
/**
 * [MinArray 数组最小值]
 */
export function MinArray(arr) {
  return Math.min.apply(null, arr)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题