国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

比較 JavaScript 日期對象也能踩坑?漲姿勢了

開發 前端
直覺上,兩個相同的日期之間比較應該是相等的,然而結果并不是這樣。

 [[359213]]

直覺上,兩個相同的日期之間比較應該是相等的,然而結果并不是這樣:

 

  1. const d1 = new Date('2019-06-01'); 
  2. const d2 = new Date('2018-06-01'); 
  3. const d3 = new Date('2019-06-01'); 
  4.  
  5.  
  6. d1 === d3; // false 
  7. d1 == d3; // false 

可以看到,無論用===還是==,結果都是false。細想也不奇怪,畢竟是兩個獨立的 JS 對象,并不是基本數據類型的變量。那該怎么判斷日期是否相等呢?

可以用toString()或者valueOf()。日期對象的toString()方法將日期轉成 ISO 日期字符串形式,而valueOf() 方法則將日期轉成毫秒數字形式的時間戳。

 

  1. const d1 = new Date('2019-06-01'); 
  2. const d2 = new Date('2018-06-01'); 
  3. const d3 = new Date('2019-06-01'); 
  4.  
  5.  
  6. // Sat Jun 01 2019 08:00:00 GMT+0800 (中國標準時間) 
  7. d1.toString(); 
  8. d1.valueOf(); // 1559347200000 
  9.  
  10.  
  11. d1.toString() === d2.toString(); // false 
  12. d1.toString() === d3.toString(); // true 
  13.  
  14.  
  15. d1.valueOf() === d2.valueOf(); // false 
  16. d1.valueOf() === d3.valueOf(); // true 

有意思的是,雖然== 和 === 不能用來比較日期對象,< 和> 卻可以:

 

  1. d1 < d2; // false 
  2. d1 < d3; // false 
  3.  
  4.  
  5. d2 < d1; // true 

因此,要判斷日期a是否在日期 b之前,只要判斷a < b是否為true。另外,日期之間還能用-操作符相減,返回毫秒差值。

 

  1. const d1 = new Date('2019-06-01'); 
  2. const d2 = new Date('2018-06-01'); 
  3. const d3 = new Date('2019-06-01'); 
  4.  
  5.  
  6. d1 - d3; // 0 
  7. d1 - d2; // 1 年的毫秒數, 1000 * 60 * 60 * 24 * 365 

也就是說,你可以用a - b 結果的正負來判斷兩個日期的先后。

數組排序的坑

日期對象數組排序的結果很可能出乎意料。比如下面這個排序:

 

  1. const d1 = new Date('2017-06-01'); 
  2. const d2 = new Date('2018-06-01'); 
  3. const d3 = new Date('2019-06-01'); 
  4.  
  5.  
  6. [d2, d1, d3].sort(); // [d2, d3, d1] 

按理說從小到大排序應該是[d1, d2, d3],結果很意外。這是為什么呢?原來,JavaScript 數組的sort方法默認是比較元素的字符串形式。因此,上面的sort實際上是基于下面的結果來排序的:

 

  1. 'Fri Jun 01 2018 08:00:00 GMT+0800 (中國標準時間)'
  2.   'Sat Jun 01 2019 08:00:00 GMT+0800 (中國標準時間)'
  3.   'Thu Jun 01 2017 08:00:00 GMT+0800 (中國標準時間)' ] 

怎么解決這個問題?很簡單,傳一個自定義的排序函數compare()給sort()方法。這個compare()函數的返回值確定了兩個元素的大小(先后順序):

  • 0 表示 a 和b 相等
  • 正值表示 a > b,也就是a在b后面
  • 負值表示 a < b,也就是a在b前面

由于 JavaScript 日期對象可以直接相減,那這個比較函數就很簡單了:

 

  1. const d1 = new Date('2017-06-01'); 
  2. const d2 = new Date('2018-06-01'); 
  3. const d3 = new Date('2019-06-01'); 
  4.  
  5.  
  6. [d2, d1, d3].sort((a, b) => a - b); // [d1, d2, d3] 

下次碰到數組數組默認排序出現這樣的結果你也就不感到奇怪了:

 

  1. const a = [1, 4, 3, 12]; 
  2. a.sort(); // [1, 12, 3, 4] 

所以為了防止出現 Bug,應該傳入自定義排序函數。

責任編輯:華軒 來源: 1024譯站
相關推薦

2022-11-18 07:34:12

Docker項目目錄

2022-07-26 09:34:23

監控系統

2021-12-28 08:17:41

循環 forgo

2021-03-02 10:50:23

SpringMVC 參數JavaWeb

2024-04-10 08:39:56

BigDecimal浮點數二進制

2016-12-02 20:43:28

Android

2023-11-18 18:36:17

defer語句延遲

2023-03-06 07:50:19

內存回收Go

2025-11-24 09:01:03

Flink內存模型

2025-12-03 00:57:00

2025-08-21 08:03:22

MySQLPostgreSQL類型

2018-01-26 09:01:16

對象存儲Java

2021-07-28 05:01:29

Lombok前端測試

2024-11-20 18:16:39

MyBatis批量操作數據庫

2010-09-02 17:31:42

VisualStudi微軟flash

2020-09-15 08:46:26

Kubernetes探針服務端

2015-06-08 11:21:42

iOS技巧

2025-08-26 03:00:00

加密Spring存儲

2023-01-18 23:20:25

編程開發

2025-02-18 15:17:59

點贊
收藏

51CTO技術棧公眾號

国产一区二区不卡视频在线观看| 欧美一区二区女人| 日本一本中文字幕| 久久亚洲二区三区| 白白色视频在线| 日韩久久免费av| 2023国产精华国产精品| 免费视频爱爱太爽了| 亚洲综合日韩| 欧洲伦理片一区 二区 三区| 日韩精品第二页| 色噜噜狠狠色综合欧洲selulu| 天天免费亚洲黑人免费| 日韩欧美在线免费观看| 国产精品qvod| 中国黄色片免费看| 欧美在线视频一区| 国产精品免费丝袜| 视频福利一区| 欧美婷婷久久五月精品三区| 91欧美日韩一区| 欧美一区三区二区| 一区二区三区在线免费观看| 欧美日韩激情| 一区二区在线播放视频| 日本一区二区不卡| 日韩欧美中文字幕在线播放| 国产一区二区你懂的| 香蕉视频禁止18| 欧美日韩小视频| 动漫一区二区三区| 久久久精品国产一区二区三区| 麻豆成人小视频| 久久www视频| 污片在线观看一区二区| 成人直播大秀| 在线视频99| 欧美激情小视频| 国产xxx精品视频大全| аⅴ资源天堂资源库在线| 亚洲最新在线| 日韩精品黄色网| 久久99国产精品麻豆| 成人在线超碰| 国产在线高清视频| 牛人盗摄一区二区三区视频| 午夜伦欧美伦电影理论片| 玖玖玖电影综合影院| 久久这里只有精品18| 一区二区三区日韩精品视频| 一区二区三区四区在线看| 亚洲精品乱码久久久久久自慰| 日韩视频不卡中文| 一本不卡影院| а√天堂在线官网| 国产一区二区精品丝袜| 精品一区二区三区的国产在线播放| 色老头视频在线观看| av一区观看| 久久婷婷久久一区二区三区| 亚洲精品一二三**| 久久久久久久久久久久久国产精品 | 交100部在线观看| 精品久久蜜桃| 国产精品理论在线观看| 深夜成人在线| 国产精品嫩草在线观看| 欧美性猛交xxxx富婆| www.成人在线视频| 国产综合av在线| 亚洲国内精品视频| 奇米影视7777精品一区二区| 美女视频黄a视频全免费观看| 日韩精品一区二区三区swag | 91精品尤物| 色综合电影网| 精品视频偷偷看在线观看 | 50路60路老熟妇啪啪| 久久久久久久久久久久久久一区| 久久精品美女视频网站| 亚洲精品免费一二三区| 国产91在线播放精品| 成人在线免费观看视频网站| 国产精品啪视频| 国内免费久久久久久久久久久| 一本色道综合亚洲| 亚洲精品欧美综合四区| 99久久精品免费看国产| 久久成人av少妇免费| 国产精品日本欧美一区二区三区| 日韩夫妻性生活xx| 久久99视频| 自拍偷拍一区| 99国产精品久久一区二区三区| 成人激情自拍| 日本一区精品视频| 亚洲精品视频一二三区| 永久免费精品视频| 免费观看黄色网| av天在线播放| 国产国产国产国产国产国产| 成人黄18免费网站| 国产69精品久久久久久| 国产成人精品优优av| 欧美最顶级丰满的aⅴ艳星| 国内外成人免费激情在线视频网站| 一区二区欧美在线| 欧美猛少妇色xxxxx| 91av成人在线| 动漫一区二区在线| 国产在线一区二| 国产成年人在线观看| 激情五月六月婷婷| 女性女同性aⅴ免费观女性恋| 国产日产欧美视频| 蜜桃特黄a∨片免费观看| 三级黄色网址| 中文日本在线观看| 久久精品国产福利| 日韩中文首页| 99国产成+人+综合+亚洲欧美| 麻豆中文一区二区| 久久久777精品电影网影网| 亚洲一二三四区不卡| 精品美女在线播放| 久久久久久国产免费| 91久久综合亚洲鲁鲁五月天| 99r国产精品视频| 亚洲成熟丰满熟妇高潮xxxxx| 亚洲精品一区视频| 欧美粗大gay| 99精品美女| 91理论电影在线观看| 欧美日韩国产小视频| 久久久亚洲影院| 日韩成人av电影在线| 色久视频在线观看| 激情小说亚洲| 三级不卡在线观看| 亚洲精品亚洲人成人网在线播放| 亚洲性夜色噜噜噜7777| 精品日本一区二区三区| 香港三级经典全部种子下载| 91欧美精品| 国产欧美精品| 亚洲国产日日夜夜| 91av在线播放| 成人3d动漫一区二区三区| 在线免费观看a视频| 九热爱视频精品视频| www欧美成人18+| 欧美麻豆精品久久久久久| 91高清免费视频| 成人在线免费观看av| 四虎影院观看视频在线观看| 99精品国产一区二区三区| 国产精品欧美经典| 中文国产成人精品久久一| 欧美一区视久久| 日本亚洲精品| 91精品国产自产在线观看永久∴| 国产精品高潮呻吟| 欧美极品美女电影一区| 国产又大又硬又粗| 亚洲网站免费| 99re这里只有精品6| 欧美黑人一区二区三区| 国产裸体舞一区二区三区| 国产精品久一| 国产精品久久久久久久久晋中 | 成人做爰视频www| 成人听书哪个软件好| 久久6精品影院| 免费在线观看视频| 一本到12不卡视频在线dvd| 懂色av影视一区二区三区| 日韩欧美一区二区三区四区| 中老年在线免费视频| 91一区二区三区在线观看| 奇米一区二区三区四区久久| 青青草超碰在线| 精品亚洲aⅴ乱码一区二区三区| 尤物精品国产第一福利三区| 黄色成人羞羞视频| 国产精品啊v在线| 亚洲摸下面视频| 毛葺葺老太做受视频| jizzjizz欧美69巨大| 日韩精品一区二区在线观看| 天天综合网天天做天天受| 亚洲国产裸拍裸体视频在线观看乱了中文 | 精品176极品一区| 一区二区三区四区视频精品免费 | 午夜精品视频在线| 极品视频在线| 精品国产91久久久| 丰满少妇被猛烈进入高清播放| 在线观看国产精品入口| 欧美猛少妇色xxxxx| 欧美78videosex性欧美|