繁体   English   中英

比较两个日期时出现意外结果

[英]Unexpected result when comparing two dates

我在此if块中比较两个日期:

    if(columnsData[i][0] == selectDate){
      todayGeneralCount = todayGeneralCount +1;
      for (var j=0; j<countingByTypeArrays.length; j++) {        
           if(countingByTypeArrays[j][0] == columnsData[i][0]){
              countingByTypeArrays[j][1] == countingByTypeArrays[j][2] +1;             
           }
        else {
             countingByTypeArrays.push([columnsData[i][0], 1]);
      }
    }
  }

条件始终返回False 但是当我查看日志时,我得到了:

在此处输入图片说明

这似乎是一个意外的结果:两个值都是Date类型,并且具有相同的值。 是什么产生这种行为? 如何获得True结果?

一个对象永远不会与另一个对象( 证明 )相同,即使它们包含相同的值,因此您必须比较其他对象,最简单的方法是使用getTime()

当您使用其他一些运算符时,例如<><=等。比较确实可以在对象上调用toValue() ,但是在使用==时不可以,因为它们只是比较对象,所以它们是不相同的。

if(columnsData[i][0].getTime() == selectDate.getTime()){ ...

还有,在你正在做的情况下

if(countingByTypeArrays[j][0] == columnsData[i][0]){
     countingByTypeArrays[j][1] == countingByTypeArrays[j][2] +1;             
}

您知道您没有在设置任何正确的东西,因为那只是一个等号,并且您在毫无明显理由地比较这些值?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM