在推送之前检查数组中的现有数组

时间:2017-09-25 22:44:43

标签: javascript arrays google-apps-script

我在尝试推送到阵列时遗漏了一些东西,同时防止了重复。

我一直在寻找将员工的每一次出现都推送到新员工阵列的代码,但我无法弄清楚如何只推送一个唯一的列表。

我的最终数组是一个二维数组,因此可以将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);
    }

1 个答案:

答案 0 :(得分:1)

如果没有重写函数或编写自己的函数,IndexOf不能与数组中的对象一起使用。但它可以很好地处理字符串。所以一个简单的解决方法就是创建一个并行的字符串数组,这样我们就可以保持代码几乎完好无损。因此,添加,

var employeesIndex=[];

之后

var employees=[]

改变你内心的条件&#34;如果&#34;

的条款
(employeesIndex.indexOf(data[i][1])===-1)

并在if块中添加一行来更新索引

employeesIndex.push(data[i][1]);

这样,当您的employees数组包含您需要的数组时,索引会跟踪重复项。

相关问题