![](/img/trans.png)
[英]JavaScript if statement doesn't seem to be comparing string for certain values
[英]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。
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.