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)'); 

非正統,但對我的功能。

問候,

哈羅德·包蒂斯塔