我正在比较这个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
结果?
答案 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;
}
你知道你没有设置任何正确的东西,因为这只是一个相同的标志,而你没有明显的理由比较这些值?