【问题标题】:GSA error: Cannot find function includes in objectGSA 错误:找不到对象中包含的函数
【发布时间】:2019-08-15 05:49:16
【问题描述】:

我有 2 个数组,我想在第一个数组中找到第二个数组的值是第一个数组的推送数据,但我不能。

错误消息:“TypeError:找不到函数包含在对象中......”

这是我的代码:

function loadArrInArr(){

  var firstArr = ["aaa", "bbb", "ccc"];
  var ss = SpreadsheetApp.openByUrl(urldb);
  var ws = ss.getSheetByName("sheet1");
  var secondArr = ws.getDataRange().getDisplayValues();
  var tmpArr = [];

  for(var i = 0; i < secondArr.length; i++){
    if(firstArr.includes(secondArr[i][0])){ //err this line
      tmpArr.push(secondArr[i]);
    }
  }

}

【问题讨论】:

标签: javascript google-apps-script


【解决方案1】:

很遗憾,在当前阶段,includes() 还不能与 Google Apps 脚本一起使用。那么这个改装怎么样呢?在此修改中,使用indexOf 代替includes

模式一:

当你的脚本被修改时,这个修改怎么样?

发件人:

if(firstArr.includes(secondArr[i][0])){

收件人:

if(firstArr.indexOf(secondArr[i][0]) > -1){

if(~firstArr.indexOf(secondArr[i][0])){

模式 2:

作为另一种模式,这个修改怎么样?

发件人:

var tmpArr = [];

for(var i = 0; i < secondArr.length; i++){
  if(firstArr.includes(secondArr[i][0])){ //err this line
    tmpArr.push(secondArr[i]);
  }
}

收件人:

var tmpArr = secondArr.filter(function(row) {return ~firstArr.indexOf(row[0])});
  • secondArr的长度较大时,使用filter()可以比for循环降低处理成本。

参考资料:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

【讨论】:

  • 感谢您的帮助,我测试了一下,成功了。你真好!
  • @Naoa Lee 感谢您的回复。我很高兴你的问题得到了解决。我又添加了一个脚本。你能确认一下吗?附加脚本比使用 for 循环的脚本更快。
  • 非常感谢,请给我链接!
  • @Naoa Lee 在我的回答中,附加脚本是“模式 2”。
  • 对不起,^^谢谢您的热情!
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2018-12-19
  • 2015-04-20
  • 1970-01-01
  • 2019-01-18
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多