11

我正在尝试创建一个接收任何数组并将其转置的函数,以便行变为列,列变为行。

不确定我做错了什么或遗漏了什么,但是一旦数组通过,就会不断收到此消息....

TypeError:无法将未定义的属性“0.0”设置为“xxxxxx”。

错误在线

结果[行][列] = 数组[列][行];// 旋转

任何指针将不胜感激。

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

4 回答 4

20

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

function transpose(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
于 2013-05-23T03:18:56.657 回答
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;
}
于 2013-05-18T22:36:10.580 回答
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);
    } 
}

希望这可以帮助。

于 2015-03-09T09:16:14.703 回答
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)');

非正统,但对我有用。

问候,

哈罗德·包蒂斯塔

于 2016-08-14T18:29:37.187 回答