2014-11-21 20 views
1

我在將數組組合到一個數組中然後用下面的代碼翻轉它時遇到了一些麻煩。目標是在電子表格的一列中設置值的數組。在titleArray函數之後,我希望將數組分佈在一行的多個列上。然後,使用我在另一個堆棧溢出線程(Google Spreadsheet Script - How to Transpose/Rotate Multi-dimensional Array?)中找到的函數,我想要翻轉該數組,使其分佈在一列上的多行上。當前代碼正在爲array1中的每個元素返回一個數組,這些數組全部位於另一個數組中。然後,transposeArray函數將來自每個數組的值,1與1,2相加,依此類推。任何人都可以發現我在這裏做錯了嗎?將數組組合使用在Google表格中

var titleArray = function(){ 
 
    var output = []; 
 
    for(i=0; i < array1.length; i++){ 
 
      if(array1[i].length > 0){ 
 
      var titles = ["",array1[i] + " Data"].concat(array2, array3, array4, array5, array6, array7); 
 
      output.push(titles); 
 
      } 
 
     } 
 
     return(output); 
 
     } 
 
    } 
 

 
     
 
    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; 
 
     } 
 
    transposeArray(titleArray);

+0

與去年更改一行'transposeArray(titleArray())會發生什麼;'? – 2014-11-21 14:31:49

+0

每個值都與另一個數組中的相應值配對。在第一個函數之後,我看到類似這樣的東西... [[,array1value1,array1value2,array1value3],[array2value1,array2value2,array2value3]] 然後在第二個函數之後,我看到類似這樣的東西... [[, ],[array1value1,array2value1],[array1value2,array2value2],[array1value3,array2value3]] – 2014-11-21 14:36:47

回答

2

我能夠坐下來與一個程序員,他幫助我度過這一點。基本上,我需要使用concat方法而不是push方法。我在這個過程的早期嘗試使用concat,但是在第一種方式中使用它,而不是第二種。我已經在下面列出了全新的代碼。

output.concat(titles); 
output = output.concat(titles); 

var titleArray = function(){ 
 
    var output = []; 
 
    for(i=0; i < array1.length; i++){ 
 
      if(array1[i].length > 0){ 
 
      var titles = ["",array1[i] + " Data"].concat(array2, array3, array4, array5, array6, array7); 
 
      ouput = output.concat(titles); 
 
      } 
 
     } 
 
     return(output); 
 
     } 
 
    } 
 

 
     
 
    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; 
 
     } 
 
    transposeArray([titleArray]);

+0

我遇到了這個問題。謝謝卡爾文。我想告訴任何人,在這種情況下,如果你之後會在同一個數組中使用bar.concat(foo),那麼在for循環中你會發現「var foo」是關鍵的。我在做所有提到的事情,只是我在for循環之外聲明瞭foo。 – Jtello 2018-02-04 06:01:18