4

我试图创建一个函数,它接受任何数组并转置它,以便行变为行和列。谷歌电子表格脚本 - 如何转置/旋转多维数组?

不知道我做错了或失踪,但不断收到此消息一旦阵列是通过....

类型错误:无法设置undefined以“XXXXXX”财产“0.0”。

误差线

结果[行] [山口] =阵列[COL] [行]。 //旋转

任何指针将不胜感激。

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; 
    } 

回答

3

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

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; 
} 
8

我个人最喜欢的是this gist

function transpose(a) 
{ 
    return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); }); 
} 
1

我发现这种方式:

function onOpen() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("SEGUNDOA2E"); 
    var notas = sheet.getRange("G6:AK6").getNotes(); 

    for (var i = 0; i < 31; i++){ 
     var nota = notas[0][i]; 
     var conceptos = sheet.getRange(37+i,7).setValue(nota); 
    } 
} 

希望这有助于。

0

我解决了请求函数关系式:

var RanMar = HojaResp.getRange("H1:X1"); // Se establece rango para las marcas de cemento. 
    var Rango2 = HojaInfo.setActiveCell("B3"); // Temporal 
    Rango2.setFormula('=transpose(Respuestas!H1:X1)'); 

非正统,但对我的功能。

问候,

哈罗德·包蒂斯塔