由于未声明的数组位置,从 google 脚本中轰炸

Bombing out of google script due to an non declared array position

我有一个非常大的二维数组(对于这种情况,我们只需要将其设为 20 行 x 5 列)。如果我在第 n 行,我必须检查第 n+1 行(比如第 3 列)是否小于第 n 行。问题是第 n+1 行 (data[nth+1] = []) 尚未创建,因此脚本爆炸。

(1) 有没有办法判断数组中的一行是否已创建?或

(2) 有没有办法告诉第 n+1 个数组位置尚未创建?我试过 isError_() 但那只是炸毁了脚本。

示例:

function tester() {
  var data = [ [] , [] ];  
  data[1] = [];  
  data[1][1] = 10;  
  for (i=1 ; i < 5 ; i++) {   
    if (data[1][1] < data[i+1][1]) { Browser.msgBox("You have a problem", Browser.Buttons.OK);}
  }  
}

另外:有没有人对脚本编辑器有比 google 工作表脚本编辑器更好的建议。好像比EXCELSVBA编辑器晚了光年? EXCEL 允许您选择要查看的 3 或 4 个变量,而不是所有变量的总列表,然后您必须对其进行搜索。此外,当您使用 break 在函数中移动时,变量列表会不断更改和移动变量名称,这非常令人困惑。感谢您的任何建议。

数组长度:

您可以使用 Array 对象的 length property 根据外部数组 data 的长度来限制循环中的迭代次数。

你必须改变这个:

for (i=1 ; i < 5 ; i++) {

为此:

for (var i = 1 ; i < data.length - 1; i++) { 

注:

  • 如果使用 var i = 1 初始化循环,data 中的第一个元素将被忽略(数组索引从 0 开始)。如果您想避免这种情况,请将其更改为 var i = 0

参考: