【问题标题】:How to compare strings in google apps script如何比较谷歌应用程序脚本中的字符串
【发布时间】:2014-03-17 15:34:55
【问题描述】:

我正在尝试比较从我的谷歌电子表格中获得的字符串值。

我的月份以“Jun13”、“Aug13”等格式显示,而我的脚本在比较这些格式的值时遇到问题

var data = ss.getRange(2,2,ss.getLastRow(),3).getValues();
var ListOfMonths = new Array();

for(var i = 0; i < data.length; ++i){

var row = data[i][0];
var duplicate = false;
  for(j in ListOfMonths){
      if(row.toString.match(ListOfMonths[j][0])){
        duplicate = true;
      }
      if(!duplicate){
        ListOfMonths.push(row);
      }
  }
}

有人可以帮我解决这个比较字符串的问题吗?我也试过 == 和 === 但它们都不起作用

【问题讨论】:

  • 为什么将 ListOfMonths 引用为二维数组? if(row.toString.match(ListOfMonths[j][0]))

标签: google-apps-script spreadsheet


【解决方案1】:

试试看:

function test(){
  var ss = SpreadsheetApp.getActive().getSheetByName("month test");
  var data = ss.getRange(2,2,ss.getLastRow(),3).getValues();
  var ListOfMonths = new Array();  
  for(var i in data){
    var row = data[i][0].toString();
    if(ListOfMonths.indexOf(row)==-1){
      Logger.log(row+" is not referenced. Adding it");
      ListOfMonths.push(row);
    }
  }
  Logger.log(ListOfMonths);
}

【讨论】:

    【解决方案2】:

    Harold 的代码比您的代码更高效,但它的逻辑不同...如果您想知道为什么您的代码在这里不起作用,那么这个版本采用与您相同的方法,但有一些错误更正让它工作。

    简而言之,您将值推送到循环中的错误位置,并且您忘记添加第一项以使第二个数组中至少有一个元素。您没有正确使用 match,match 返回字符串中的“公共”部分,而不是布尔值。

    代码如下:

    function myFunction() {
      var ss = SpreadsheetApp.getActiveSheet();
      var data = ss.getRange(2,2,ss.getLastRow(),3).getValues();
      var ListOfMonths = new Array();
      ListOfMonths.push(data[0])
    
      for(var i = 0; i < data.length; ++i){
    
        var row = data[i];
        var duplicate = false;
    
        for(j in ListOfMonths){
          var item = ListOfMonths[j][0];
          if(row.toString().match(item) == item){
            duplicate = true;
            break;
          }
        }
        if(!duplicate && i<data.length-1){
          ListOfMonths.push(row); 
        }
      }
      Logger.log(ListOfMonths);
    }
    

    【讨论】:

      【解决方案3】:

      您有什么理由不能使用“==”运算符吗?

      if ( "April" == ListOfMonths[j][0] ) {
          Logger.log("Match!");
      }
      

      【讨论】:

        【解决方案4】:

        只需使用 '==' 运算符:

        if(myString != ''){
        //do something
        }
        

        享受吧!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多