簡體   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