Javascript平等比较不起作用

时间:2017-02-10 04:26:41

标签: javascript google-sheets

有人可以解释为什么永远不会调用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]

2 个答案:

答案 0 :(得分:0)

您正在使用严格比较===,只有当操作数类型相同且内容相同时才会出现这种情况(对象涉及它们必须引用完全相同的对象)。

而抽象比较==在比较之前将操作数转换为相同的类型。

可能col1[i]col2[i]违反了上述条件之一。 (如果它们是对象,==也将返回false,除非它们引用相同的对象)

MDN Comparison operator documentation

答案 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);