["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)
先把时间转时间戳,拿到最大值最小值再时间戳转时间
/**
* [MaxArray 数组最大值]
*/
export function MaxArray(arr) {
return Math.max.apply(null, arr)
}
/**
* [MinArray 数组最小值]
*/
export function MinArray(arr) {
return Math.min.apply(null, arr)
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
方法有点傻,简单理解成时间排序吧,把小时和分钟带入到1970年1月1日后 获取毫秒数 再去排序即可拿到最大或者最小,期待有更好的解决方法哈哈
输出:
['14:00', '14:30', '15:00', '15:30']