Google apps script 二维子数组索引google脚本
我在谷歌电子表格中使用应用程序脚本有2D数组问题 我知道为了使代码更快,我应该使用尽可能少的get和set函数。所以我试着先把一整张纸读入一个2D数组,然后引用其中的一部分。除了我不知道如何引用2D数组,一旦它进入 以下是我迄今为止所做的工作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
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
}