【问题标题】:google app script array delete duplicate value from top谷歌应用脚​​本数组从顶部删除重复值
【发布时间】:2017-09-08 11:33:14
【问题描述】:

我有这个工作代码,它通过比较 B 列中的值来删除重复项。如果第 2 行和第 3 行在 B 列中具有相同的值,则删除第 3 行。

function removeDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var newData = new Array();
  for(i in data){
    var row = data[i];
    var duplicate = false;
    for(j in newData){
      if(row[1] == newData[j][1]){
        duplicate = true;
}
    }
    if(!duplicate){
      newData.push(row);
    }
  }
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

如何更改此代码以从编辑此构建数组,以便删除第 3 行而不是删除第 2 行?

【问题讨论】:

    标签: javascript arrays google-apps-script


    【解决方案1】:

    我认为这可以做到。

      function removeDuplicates() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getActiveSheet();
      var rg=sh.getDataRange();
      var row=rg.getRow();
      var col=rg.getColumn();
      var vA=rg.getValues();
      var nA=[];
      var duplicate=true;
      for(var i=0;i<vA.length;i++)
      {
        duplicate=false;
        for(var j=0;j<nA.length;j++)
        {
          if(vA[i][1]==nA[j][1])
          {
            duplicate=true;
            nA[j]=vA[i];
          }
        }
        if(!duplicate)
        {
          nA.push(vA[i]);
        }
      }
      rg.clearContent();
      sh.getRange(row, col, nA.length, nA[0].length).setValues(nA);
    }
    

    外部循环正在遍历活动工作表的所有行,并且每次都将重复设置为 false。内部循环在 nA[] 中搜索以查找 columnB 匹配项,如果找到匹配项则将其设置为 true。如果 duplicate 为真,则不会将其添加到 nA[]。第一次通过 nA.length 是 0,所以内部循环不做任何重复是错误的,所以元素被添加到 nA[]。它一直这样做,直到没有更多行并且 nA 中的行成为唯一行。这就是我第一次这样做时的运行方式。但是由于您想保留最后一个副本而不是第一个副本,所以我添加了nA[j]=vA[i];,它将当前元素替换为当前匹配项。

    只需设置一些假数据并使用它,您就会开始了解它是如何工作的。

    【讨论】:

    • 这似乎没有任何作用。
    • 很抱歉。有时我无法阅读整个问题。但我认为这就是你想要的。现在最后一个副本是保留的那个。
    • 你能用简单的英语解释一下代码发生了什么吗?代码运行良好。显然我的大脑没有。我已将 cmets 添加到我认为正在发生的事情中。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多