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

时间:2014-02-02 03:10:35

标签: javascript google-apps-script

我正在比较这个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。但是当我查看日志时,我得到了这个:

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

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

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

同样,在你正在做的情况下

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

你知道你没有设置任何正确的东西,因为这只是一个相同的标志,而你没有明显的理由比较这些值?