【问题标题】:JavaScript / Google Script - Transpose "Row" Array into "Column" ArrayJavaScript / Google 脚本 - 将“行”数组转换为“列”数组
【发布时间】:2021-06-08 23:58:39
【问题描述】:

下午好,

我正在尝试将“行”数组(或 1D 数组)转置为“列”数组(或其中包含单个数组的数组),以允许我将值设置为单个列(向下多行) 如果它是跨多列的一行

我尝试使用推送循环和地图功能,但均未成功:

function myFunction2() {

  var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Source1");

  var lastColumn = ss.getLastColumn()

  var endRange = lastColumn-3

  //Retrieve values into array named "items"
  var items = ss.getRange(16,4,1,endRange).getValues()

转置尝试#1:

  var colArray = [];
    for (var i=0; i<items.length; i++)
    {
      colArray.push([items[i]]);
    }
}

尝试 #1 的输出:

[[[item1, item2, item3, item4, item5]]]

转置尝试 #2:

  var colArray = items.map(function (el){
      return [el];
  });

第 2 次尝试的输出:

[[[item1, item2, item3, item4, item5]]]

我想要的预期输出是:

[[item1], [item2], [item3], [item4], [item5]]

有没有办法实现预期的输出?

【问题讨论】:

标签: javascript arrays google-apps-script transpose


【解决方案1】:

在您的var items = ss.getRange(16,4,1,endRange).getValues() 脚本中,items 是二维数组,如[[value1, value2, value3,,,]]。所以,当你的脚本被修改后,它变成了如下。

发件人:

  var colArray = [];
    for (var i=0; i<items.length; i++)
    {
      colArray.push([items[i]]);
    }
}

收件人:

var colArray = [];
for (var i = 0; i < items[0].length; i++) {
  colArray.push([items[0][i]]);
}

还有,

发件人:

var colArray = items.map(function (el){
    return [el];
});

收件人:

var colArray = items[0].map(function (el){
  return [el];
});

注意:

  • 或者,当你想转置包括几行多列的值时,你也可以使用下面的脚本。

      const colArray = items[0].map((_, i) => items.map(row => row[i]));
    

参考资料:

【讨论】:

    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多