在尝试推送到数组同时防止重复时,我丢失了一些内容。
我一直在研究将员工的每次出现推送到新员工数组的代码,但我无法弄清楚如何只推送唯一的列表。
我的最终数组是一个二维数组,因此可以将其 setValues() 返回到 Google 工作表中的列中。
function queryEmployees(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var lRow = sh.getLastRow();
var data = sh.getRange(1,1,lRow,2).getValues();
var employees = [];
for(i=0;i<data.length;i++){
if(data[i][0]==='Team member evaluated'){
if(employees.indexOf([data[i][1]])===-1){
employees.push([data[i][1]]);
}
}
}
Logger.log(employees);
Logger.log(employees.length);
SpreadsheetApp.getActiveSpreadsheet().getSheets()[1]
.getRange(1,1,employees.length,1).setValues(employees);
}
最佳答案
如果您不重写函数或编写自己的函数,则 IndexOf 无法处理数组中的对象。不过,它与字符串配合得很好。因此,一个简单的解决方法是创建一个并行的字符串数组,这使我们能够保持您的代码几乎完好无损。因此,添加,
var employeesIndex=[];
在你之后
var employees=[]
将内部“if”子句的条件更改为
(employeesIndex.indexOf(data[i][1])===-1)
并在该 if block 中添加一行来更新索引
employeesIndex.push(data[i][1]);
这样,当您的员工数组包含您需要的数组时,索引会为您跟踪重复项。
关于javascript - 在推送之前检查数组中是否存在现有数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46415259/