【发布时间】:2022-01-30 16:08:45
【问题描述】:
我想知道如何从 2 个数组中删除重复值,合并到一个主数组中。
这个值不能从工作表或文档中删除,只能在数组中,这就是为什么我没有使用 clear() 或 clearContents() 内置函数;
我还尝试修改 GAS 教程中的 removeDuplicates() 函数,但它会在从 A 到 Z 的列中抛出行,而不是过滤行...一团糟。
注意事项:
getClients()的参数来自其他函数,可以正常工作。
newClients 列出“用户”工作表中的客户,newUsers 列出另一个名为“数据”的工作表中的用户。
两张表属于同一个电子表格。
newClients 和 newUsers:两个数组都只包含字符串(用户名),并且两者都有重复的值。
因此,目标被确定并删除那些值,原始的和重复的。
我认为应该更容易,但我是 JS 新手,所以我尝试过的一切都没有奏效。
谢谢
守则
function getAllClientsFromData(body,project){
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Active the Sheets
var sheet= ss.getSheets()[1,3];
// Access data in Sheet "Data"
var rangeC = ss.getRangeByName("clients"); //A:2:C273
var rangeU = ss.getRangeByName("names"); //A5:A
var clients = rangeC.getValues();
var users = rangeU.getValues();
var lastRow = sheet.getLastRow()-2;
body += "<h2>Total of " + lastRow + " clients in " + project + "</h2>"
body += "<table style=" + STYLE.TABLE + ">";
body += getClients(ss,clients,users,project);
body += "</table>";
return body;
}
function getClients(ss,clients,users,project){
var body = "";
var newClients = [];
for( var g = 0; g < clients.length; g++ ){
var currentProject = clients[g][2];
if( clients[g]!= "" ){
newClients.push(clients[g][0]);
}
} // end for
var newUsers = [];
for( var u = 0; u < users.length; u++ ){
if( users[u] != "" ){
newUsers.push(users[u][0]);
}
} // end for
var allData = newUsers.concat(newClients);
var uniqueData = allData.sort();
body += "<tr><td style=" + STYLE.TD + ">" + uniqueData.join("</td><tr><td style=" + STYLE.TD + ">") + "</td></tr></tr>";
return body;
}
更新!
答案的过滤效果很好,但我得到的结果与我之前的尝试相同:显示过滤后的结果。我需要将它们从数组中删除。示例:
var array = ['aa','bb','aa','ff','pp', 'pp'];
filtering code...
var array = ['bb','ff'];
我尝试添加 splice() js 方法,但我传递的参数无法正常工作。
【问题讨论】:
-
当您说“它不起作用”时,实际输出或错误是什么?