繁体   English   中英

将 GSheet 的值与 IF 语句进行比较似乎不起作用

[英]Comparing values of GSheet with IF statement doesn't seem to work

我有一些代码(目前只是测试)看起来将一个变量的值与另一个变量的值匹配。 它在遍历我的 Google 表格时位于 For 循环中。 循环正在寻找,即使值相同,if 语句似乎也不匹配项。 我附上了以下图像以显示代码图像和执行日志,并且我在下面粘贴了代码本身(因为它目前正在测试,我只是在观察日志中发生的情况)。 在图像中,您可以看到第一个检查应该匹配,但第二个不匹配,但最终两者都不匹配。 谁能帮助确定我哪里出错了?

function removeDuplicateEntry() {
  
  var app = SpreadsheetApp;
  // Get current active sheet
  var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
  var lastRow = activeSheet.getLastRow();
  var nEntry = Sheets.Spreadsheets.Values.get('1do7V_jx6T9XDWl1gSMvCyiIJdaI39qyQpw28t3CnOqo', 'E'+lastRow+':I'+lastRow);
    
  for(var i=lastRow-1;i>1;i--){
    var oEntry = Sheets.Spreadsheets.Values.get('1do7V_jx6T9XDWl1gSMvCyiIJdaI39qyQpw28t3CnOqo', 'E'+i+':I'+i);
    if(oEntry.values === nEntry.values){ 
      Logger.log(nEntry.values);
      Logger.log(oEntry.values);
      Logger.log("MATCH");
      Logger.log(i);
      //activeSheet.deleteRow(i);
    } else {
      Logger.log(nEntry.values);
      Logger.log(oEntry.values);
      Logger.log("NO MATCH");
      Logger.log(i);
      
    }
  }
};

亲切的问候,

约翰

根据Umberto Raimondi在这里的回答。

Javascript arrays 是对象,您不能简单地使用相等运算符 == 来了解这些对象的内容是否相同。 相等运算符将仅测试两个 object 是否实际上是完全相同的实例(例如 myObjVariable==myObjVariable,适用于 null 并且也未定义)。

要比较 arrays,您可以遍历 arrays 并检查所有元素是否相同或将两个数组都转换为字符串。

在您的代码中,使用JSON.stringify()转换数组:

JSON.stringify(oEntry.values) == oEntry.values(oEntry.values) 

我在下面的示例中使用了转换为字符串的方法。

示例 1:

function myFunction() {
  var a = [[1, 2, 3 ,4]];
  var b = [[1, 2, 3 ,4]];
  if(JSON.stringify(a)==JSON.stringify(b)) 
    Logger.log("True"); 
  else
    Logger.log("False"); 
}

Output:

在此处输入图像描述

示例 2:

function myFunction() {
  var a = [[1, 2, 3 ,4]];
  var b = [[1, 2, 3 ,5]];
  if(JSON.stringify(a)==JSON.stringify(b)) 
    Logger.log("True"); 
  else
    Logger.log("False"); 
}

Output:

在此处输入图像描述

延伸阅读:

有关如何比较 arrays的信息,请参阅Tomáš Zato - Reinstate Monica answer。

参考:

JSON.stringify()

暂无
暂无

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

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