![](/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.