[英]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>
x
和y
都是對象引用,因此檢查它們是否相等就是在內存中檢查它們是否都是同一對象,而不是檢查這些對象內的值是否相同。 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.