簡體   English   中英

Moment.JS:為什么具有相同日期(相同時刻的克隆)的`===`或`==`或indexOf返回false(或-1)?

[英]Moment.JS: Why `===` or `==` or indexOf with the same date (a clone of the same moment) returns false (or -1)?

為什么此代碼段記錄為false ,然后為false ,然后為-1 畢竟,時刻y是時刻x的克隆!

(我的目標是使用該日期(時刻)的副本在數組中定位一個日期(時刻)。如何實現我的目標?)

 var x = moment(); var y = moment(x); var a = moment(); var b = moment(); var c = moment(); console.log(x === y); console.log(x == y); var moments = [a, x, b, c]; console.log(moments.indexOf(y)); console.log(x); console.log(y); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment-with-locales.min.js" integrity="sha256-TbOIe++NbC9P3KTtUMJ5wcROlBdnRqrPleLdpPg3xxE=" crossorigin="anonymous"></script> 

xy都是對象引用,因此檢查它們是否相等就是在內存中檢查它們是否都是同一對象,而不是檢查這些對象內的值是否相同。 Moment.js提供了一些比較功能。 對於您的情況, .isSame應該足夠:

 var x = moment(); var y = moment(x); console.log(x.isSame(y)); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment-with-locales.min.js"></script> 

要檢查數組中的元素是否與時間匹配,可以使用findIndex:

 var x = moment(); var y = moment(x); var a = moment('2010-10-20'); var b = moment('2010-10-21'); var c = moment('2010-10-22'); var moments = [a, x, b, c]; const index = moments.findIndex(moment => moment.isSame(y)); console.log(index); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment-with-locales.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM