【发布时间】:2020-10-15 08:05:31
【问题描述】:
我正在使用谷歌应用程序脚本。如果我从 A1:E5 之类的范围开始,那就是一个 5x5 数组。 我想返回范围 C1:D5,一个 5x2 数组。从二维数组开始,只返回选定的“列”。基本上就是这样。 我认为这是一项基本操作,但我真的很挣扎。我在下面有我的代码,但我对任何使用数组的选项(而不是范围,以避免不必要地 ping 服务器)持开放态度。请注意,我确实希望能够为列传递数组参数,因此 [2,3,4] 或 [2] 或 [3,4],而不仅仅是单个或静态值。感谢您的帮助。
/**
* extracts selected 'columns' (2nd dimension) from 2d array
*
* @arr {array} larger 2d array to be subset
* @cols {array} subset of columns, eg, [3,4]
* @return 2d array with only selected cols
* @customfunction
*/
function getCols(arr,cols) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var arrRows = [];
var arrCols = [];
for(var r=0;r<arr.length;r++){
arrCols = [];// reset snippet
for(var c=0;c<cols.length;c++){
arrCols.push([arr[r][cols[c]]]); // iterate to make 1xc array snippet
}
arrRows[r].push(arrCols); // iterate to add each row
}
return arrRows; // return new arr subset that only has requested cols
}
【问题讨论】:
-
我必须为我糟糕的英语水平道歉。为了正确理解您的问题,您能否提供您期望的示例输入和输出值?
-
我认为下面的 TheMaster 通过一些示例给出了一个很好的答案。它使用了与我习惯不同的方法,所以我仍在审查它。
-
感谢您的回复。
标签: arrays google-apps-script subset extract slice