我在谷歌电子表格中使用应用程序脚本进行了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数组?
感谢。
答案 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
}
希望两个答案都能说清楚;)