有人可以解释为什么永远不会调用Logger.log("%s EQUALS %s",col1[i],col2[i]);
行吗?我是Javascript的新手,但基于this SO post我在if
语句中使用正确的运算符进行比较。这些值保证为整数,如果有所不同,则保证为空单元格。
function SetFilter(){
var first_row_to_hide=4;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var maxrows=sheet.getMaxRows();
col1 = sheet.getRange(first_row_to_hide,3,maxrows,1).getValues();//getRange(row, column, numRows, numColumns) -- column: C
col2 = sheet.getRange(first_row_to_hide,4,maxrows,1).getValues();//column: D
for (var i = 1; i < col1.length; i++){
Logger.log("%s ? %s",col1[i],col2[i]);
if (col1[i] === col2[i]){
Logger.log("%s EQUALS %s",col1[i],col2[i]);
}//sheet.hideRows(i+first_row_to_hide);
}
Logger.log("DONE");
}
第1列和第2列中的示例值:
col1 col2 Log output of '%s ? %s'
1 2 [1.0] ? [2.0]
1 1 [1.0] ? [1.0]
0 0 [0.0] ? [0.0]
0 1 [0.0] ? [0.0]
4 5 [4.0] ? [5.0]
答案 0 :(得分:0)
您正在使用严格比较===
,只有当操作数类型相同且内容相同时才会出现这种情况(对象涉及它们必须引用完全相同的对象)。
而抽象比较==
在比较之前将操作数转换为相同的类型。
可能col1[i]
和col2[i]
违反了上述条件之一。 (如果它们是对象,==
也将返回false,除非它们引用相同的对象)
答案 1 :(得分:0)
&#34; setValues方法()&#34;有2维数组。所以你的脚本通过改变
来工作来自:
if (col1[i] === col2[i]){
Logger.log("%s EQUALS %s",col1[i],col2[i]);
}//sheet.hideRows(i+first_row_to_hide);
到:
if (col1[i][0] === col2[i][0]){
Logger.log("%s EQUALS %s",col1[i],col2[i]);
}//sheet.hideRows(i+first_row_to_hide);