gpt4 book ai didi

javascript - 谷歌应用程序脚本数组从顶部删除重复值

转载 作者:行者123 更新时间:2023-11-30 21:11:14 25 4
gpt4 key购买 nike

我有这个工作代码,它通过比较 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 行?

最佳答案

我想这就可以了。

  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 匹配项,如果它找到一个并将 duplicate 设置为 true。如果 duplicate 为真,则它不会添加到 nA[]。第一次通过 nA.length 是 0,所以内部循环不做任何重复是错误的,因此该元素被添加到 nA[]。它一直这样做,直到没有更多的行并且 nA 中的行成为唯一行。当我第一次这样做时,它就是这样运行的。但是由于您想保留最后一个副本而不是第一个副本,所以我添加了 nA[j]=vA[i];,它用当前匹配项替换了当前元素。

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

关于javascript - 谷歌应用程序脚本数组从顶部删除重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46115557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com