Google电子表格脚本 - 如何转置/旋转多维数组?

use*_*934 9 javascript multidimensional-array google-sheets google-apps-script

我正在尝试创建一个接收任何数组并转置它的函数,以便行转换为列,列转换为行.

不知道我做错了什么或丢失了但是一旦数组通过就继续得到这个消息....

TypeError:无法将undefined的属性"0.0"设置为"xxxxxx".

错误在线

result [row] [col] = array [col] [row]; //旋转

任何指针都将非常感激.

function transposeArray(array){
        var result = [];
        for(var row = 0; row < array.length; row++){ // Loop over rows
          for(var col = 0; col < array[row].length; col++){ // Loop over columns
            result[row][col] = array[col][row]; // Rotate
          }
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

Mog*_*dad 14

我个人最喜欢的是这个要点:

function transpose(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
Run Code Online (Sandbox Code Playgroud)


Ada*_*amL 5

您首先需要为外部结果数组中的每个元素分配一个数组对象。可能有更有效的方法,但我会想:

function transposeArray(array){
  var result = [];
  for (var col = 0; col < array[0].length; col++) { // Loop over array cols
    result[col] = [];
    for (var row = 0; row < array.length; row++) { // Loop over array rows
      result[col][row] = array[row][col]; // Rotate
    }
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)