创建2维数组

时间:2012-11-26 23:40:06

标签: google-apps-script

我是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“

我已经尝试过创建tempArr的所有组合,我能想到的还有更多。

1 个答案:

答案 0 :(得分: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中创建你的第一个主数组,在你的for中,每次循环时,tempArr [i]被创建为一个数组,而在第二个for的内部,你想要将freqArr的值推送到内部阵列。

UPDATE 在tempArr [i]中有一个空间会导致它无法正常工作。遗憾!