2016-10-26 42 views
0

我比较objA和objB中的两个日期,并且它们与下面的控制台输出显示的不相等。
不明白为什么..为什么这两个日期在JavaScript中不相等?

objA[keysA[i]] 
Sun Sep 25 2016 00:00:00 GMT+0900 (KST) 
objB[keysA[i]] 
Sun Sep 25 2016 00:00:00 GMT+0900 (KST) 
typeof objA[keysA[i]] 
"object" 
typeof objB[keysA[i]] 
"object" 
objA[keysA[i]] !== objB[keysA[i]] 
true 
+0

Date对象,因为日期是一个对象,你可以不喜欢这样比较它们...尝试'objA [keysA [I] + 0!== objB [keysA [我]] + 0'将日期强制转换为数字 –

回答

1

在JavaScript中,你按引用比较的对象。

let a = {}; 
let b = {}; 
let c = a; 

a == b //false 
a == c //true 

比较对象的一种简单方法是将它们转换为字符串并比较字符串。您可以使用Date.prototype.toString比较喜欢这个

objA[keysA[i]].toString() !== objB[keysA[i]]].toString() //false 
1

你需要字符串化的日期&比较他们的方式。例如:

var date1 = new Date(); 
var date2 = new Date(); 

console.log (date1==date2); // This will print false 

但是,如果我们字符串化日期,并比较他们的方式,这将成为真正的,就像这样:

console.log (date1.toString() === date2.toString()) 
+1

date1 + 0 === date2 + 0以及占用毫秒差异 –

+0

是的。 @JaromandaX - 如果你要做'date1 + 0 === date2 + 0' |如你所说,它会是真实的。 – James111

相关问题