Google apps script 二维子数组索引google脚本

Google apps script 二维子数组索引google脚本,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在谷歌电子表格中使用应用程序脚本有2D数组问题 我知道为了使代码更快,我应该使用尽可能少的get和set函数。所以我试着先把一整张纸读入一个2D数组,然后引用其中的一部分。除了我不知道如何引用2D数组,一旦它进入 以下是我迄今为止所做的工作 var ss = SpreadsheetApp.getActiveSpreadsheet() var COMPANYIOSheet=ss.getSheetByName("Sheet1"); var IO_array= COMPANYIOSheet.get

我在谷歌电子表格中使用应用程序脚本有2D数组问题

我知道为了使代码更快,我应该使用尽可能少的get和set函数。所以我试着先把一整张纸读入一个2D数组,然后引用其中的一部分。除了我不知道如何引用2D数组,一旦它进入

以下是我迄今为止所做的工作

var ss = SpreadsheetApp.getActiveSpreadsheet()
var COMPANYIOSheet=ss.getSheetByName("Sheet1"); 
var IO_array= COMPANYIOSheet.getRange("A1:c10").getValues();
我想做一些类似的事情:

var subarray=IO_array[3:5][1];
但这不起作用。我似乎只能提到一点,即:

var subarray=IO_array[3][1];
如何切片到子2D阵列中

谢谢

如何切片到子2D阵列中

通过使用.-)

然后您可以引用
子阵列[i][1]
。如果需要创建一个只包含“第二列”的新数组,则需要使用一些迭代


编辑:要添加到Serge的添加中,并回复您的评论,以下是从数组返回2D子数组的一般方法:

function slice2d(array, rowIndex, colIndex, numRows, numCols) {
  var result = [];
  for (var i = rowIndex; i < (rowIndex + numRows); i++) {
    result.push(array[i].slice(colIndex, colIndex + numCols));
  }
  return result;
}
函数slice2d(数组、行索引、colIndex、numRows、numCols){
var结果=[];
对于(变量i=行索引;i<(行索引+numRows);i++){
push(数组[i].slice(colIndex,colIndex+numCols));
}
返回结果;
}

作为对Adam答案的补充,在您的示例中,
IO_数组[0]
是第1行,
IO_数组[1]
是第2行等等,每个都是一维数组。 所以“行”很容易管理

至于列,正如Adam所建议的,您必须迭代,下面是一个可能的示例:

var col = new Array()
for(i=0;i<IO_array.length;++i){
  col.push(IO_array[i][0] ;// taking index 0 means I'll get column A of each row and put it in the new array
}
var col=new Array()

对于(i=0;我知道。这么简单的操作太复杂了。如果我想用IO_数组制作一个3x3以下的数组呢?你能帮我编写一些代码吗?谢谢Serge。嗨,Adam,这就是我所说的“积极协作”;-)谢谢和+1的“补码对补码”!这个解决方案就像charme。我复制粘贴了它,做了我需要的事情。我的脚本运行速度快100倍以上
var col = new Array()
for(i=0;i<IO_array.length;++i){
  col.push(IO_array[i][0] ;// taking index 0 means I'll get column A of each row and put it in the new array
}