Javascript 推送前检查阵列中的现有阵列
我在尝试推送到阵列同时防止重复时遗漏了一些内容 我一直在寻找将员工的每一次出现都推送到新员工数组的代码,但我不知道如何只推一个唯一的列表 我的最后一个数组是2d数组,因此可以将值设置回Google工作表中的一列Javascript 推送前检查阵列中的现有阵列,javascript,arrays,google-apps-script,Javascript,Arrays,Google Apps Script,我在尝试推送到阵列同时防止重复时遗漏了一些内容 我一直在寻找将员工的每一次出现都推送到新员工数组的代码,但我不知道如何只推一个唯一的列表 我的最后一个数组是2d数组,因此可以将值设置回Google工作表中的一列 function queryEmployees(){ var sh = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; var lRow = sh.getLastRow(); var data = sh.getRan
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块中添加一行以更新索引
employeesIndex.push(data[i][1]);
这样,索引将为您跟踪重复项,而您的employees数组包含您需要的数组。Cheat!使用.Avoid==进行字符串比较,也可以使用==。Use.equals insteadJavascript没有.equals方法?==就是这样。谢谢你的更正。我最近一直在Java工作,但忘记了。我认为==在-1上也可能有帮助,至少值得一试。对不起,我给了你一条红鲱鱼。问题是indexOf在查找数组(而不是字符串)时会变得暴躁。我认为是相关的。非常有用,好主意@Jeremy