我在遇到if条件时遇到了麻烦,而且我的想法已经用完了。我一直在使用记录器来检查两个变量是否相同,并且它们在记录器中看起来相同,并且代码运行正常。这是我的代码:
//Get two ranges from Google sheets and turn into values, (inputValues and datesValues)
...
for (var i = 0; i < inputValues.length; i++) {
if ((inputValues[i][2].length > 0) && (inputValues[i][29].length > 0)) {
//This creates an event in Google Calendar. Works fine.
var eventNum = i;
Logger.log(datesValues[3][4]); // this is to test - results below
Logger.log(inputValues[eventNum][30]);
for (var k = 0; k < datesValues.length; k++) {
if (datesValues[k][4] == inputValues[eventNum][30]){
Logger.log("yes");
//Things in this loop that I want to do but can't.
}
}
}
}
以下是Logger返回的内容:
[16-12-12 09:11:50:951太平洋标准时间]周四12月15日20:00:00 GMT + 01:00 2016
[16-12-12 09:11:50:952 PST] 12月15日星期四20:00:00 GMT + 01:00 2016
我基本上无法使第二个“if
”子句绊倒,即使有i
这样的datesValues[3][4] == inputValues[eventNum][30]
。datesValues.length = 50
。那些日志看起来和我一模一样! if循环之前的for循环也正常工作,field.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// what happens after Enter is pressed
}
});
。
javascript中是否有关于日期和逻辑运算符的奇怪内容我不知道?
谢谢!
答案 0 :(得分:0)
您是否尝试过比较字符串而不是这些变量所代表的任何对象:
if (datesValues[k][4].toString() == inputValues[eventNum][30].toString()){
...
}
比较日期对象时,即使它们代表相同的日期,它们也不是同一个对象。例如,这将返回false:
console.log(new Date(2017, 1, 1) == new Date(2017, 1, 1)); // returns false
比较日期时,您可以比较上面的字符串表示或getTime()返回的值,这将是我的首选方法。
console.log(new Date(2017, 1, 1).getTime() == new Date(2017, 1, 1).getTime()); //returns true