2d子阵列索引google脚本

时间:2012-11-03 03:40:54

标签: google-apps-script google-sheets

我在谷歌电子表格中使用应用程序脚本进行了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数组?

感谢。

2 个答案:

答案 0 :(得分:4)

  

如何切入子2D数组?

使用slice()。 ; - )

var subarray=IO_array.slice(2, 5);

然后你可以参考subarray[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;
}

答案 1 :(得分:4)

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

至于列,正如亚当建议你必须迭代,这是一个可能的例子:

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
}

希望两个答案都能说清楚;)