Google 脚本:获取第 n 个长度的数组 [[x],[y]] 到 return 数组的 x/y 值 [[x1,y1],[x2,y2],等等]

Google Scripts: Getting an array [ [x], [y] ] of nth length to return array of x/y values [ [x1,y1], [x2,y2], etc]

我有一个数组:

var array1 = [ ["Item1","Item2","Item3","Item4"], ["ItemA","ItemB","ItemC","ItemD"] ];

尝试将其设置成对阅读:

[ ["Item1", "ItemA"], ["Item2", "ItemB"], ["Item3", "ItemC"], ["Item4", "ItemD"] }

我已经能够通过在 sheet 上输出原始数组,使用以下 'transpose' 函数(在该站点上找到),然后执行另一个 getDataRange() 来成功地做到这一点。 getValues() 调用新转置的 sheet.

function transpose(destSheet) {

  var values = destSheet.getDataRange().getValues; 
  var values = range.getValues();

  // transpose it & write it out
  destSheet.getRange(1,1,values[0].length,values.length)
    .setValues(Object.keys(values[0]).map ( function (columnNumber) {
      return values.map( function (row) {
        return row[columnNumber];
      });
    }));
  
}

GAS 的新手所以我一直在网上绞尽脑汁试图找到一个映射函数的例子来对数组本身执行操作而不必先将它粘贴到 sheet.

正如我在评论中提到的,我不太确定您要从 Google Apps Script 视角实现什么。

但是,这是您实现目标所需的 javascript 部分:

const array1 = [
["Item1","Item2","Item3","Item4"], 
["ItemA","ItemB","ItemC","ItemD"]
];
const farray1 = array1[0].map((_, col) => array1.map(r => r[col]));
console.log(farray1);

多亏了马里奥斯,我才让这个工作没问题:

var array1 = [ ["Item1","Item2","Item3","Item4"], ["ItemA","ItemB","ItemC","ItemD"] ];
  Logger.log(array1);
  var array2 = Object.keys(array1[0]).map(function (c) { return array1.map(function (r) { return r[c]; }); });
  Logger.log(array2);