11

行が列に、列が行に変わるように、配列を取り込んで転置する関数を作成しようとしています。

何が間違っていたのか、何が欠けていたのかわかりませんが、配列が通過するとこのメッセージが表示され続けます....

TypeError: undefined のプロパティ「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 に答える