3

私は JS が初めてで、基本的なヘルプが必要です。

データの正方行列を持つスプレッドシートがあります。

これらのデータは次のように読み取ることができます。

  var freqArr     = new Array(new Array());
  var freqSheet   = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("freq");
  var freqRows    = freqSheet.getDataRange();
  var freqNumRows = freqRows.getNumRows();
  freqArr = freqSheet.getRange(2, 2, freqNumRows, freqNumRows).getValues();

シートから読み取ったものと同様のメモリ内の配列を作成したい

 var tempArr = new Array(new Array());
  for (var i = 0; i <= 3; i++) {
    for (var j = 0; j <= 3; j++) {        
      tempArr [i][j] = freqArr[i][j] ;
    }
  }

j が 0 から 1 に増加し、tempArr [i][j] に何かを格納しようとするとすぐに、「TypeError: 未定義のプロパティ "0.0" を "xxx" に設定できません」というエラーが表示されます。

私は考えられる te​​mpArr を作成するすべての組み合わせに加えて、さらにいくつかを試しました。

4

1 に答える 1

8

私よりもはるかに賢い人なら、おそらくこれを上手に書くのに役立つかもしれませんが、私には、tempArrをメイン配列として作成し、その中に2つの配列を含めることをお勧めします。

これらの各配列の内部には値があるため、次のようになります。

// result: tempArr = [[1,2],[4,5]]
tempArr = [] // or new Array
for (var i = 0; i <= 3; i++) {
  tempArr[i] = [];
  for (var j = 0; j <= 3; j++) {        
    tempArr[i].push(freqArr[i][j]);
  }
}

最初のメイン配列をtempArr内に作成します。ループするたびに、tempArr [i]が配列として作成され、2番目のfor内で、freqArrの値を内部配列にプッシュします。

UPDATE tempArr [i]にスペースがあったため、確実に機能しませんでした。ごめん!

于 2012-11-27T00:09:38.483 に答える