【问题标题】:Converting Column Array to Rows Array in Flex在 Flex 中将列数组转换为行数组
【发布时间】:2015-03-25 16:51:50
【问题描述】:

我试图创建一个多维数组来保存数据,但我得到一个错误(“TypeError: Error #1010: A term is undefined and has no properties.”)。

var cols:int = sheet.cols;
var rows:int = sheet.values.length;
var ridx:int = 0;
var cidx:int = 0;
var out:Array = new Array();

var i:int;
for (i=0; i < cols; i++) {
    out[i] = new Array();
    var j:int;

    for (j=0; j < rows; j++) {
        out[ridx][cidx] = sheet.getCell(j, i).value;

        ridx++;

        if(ridx >= rows) {
            cidx++;
            ridx = 0;
        }
    }
}

我做错了什么?

提前致谢!

编辑:

现在我有了这个代码:

for (var i:int = 0; i < cols; i++) {
    out[i] = new Array();                   
    for (var j:int = 0; j < rows; j++) {
        out[j][i] = sheet.getCell(j, i).value; //IM GETTING THE ERROR HERE
    }
}

【问题讨论】:

  • 看起来你有两对变量 (i,j) 和 (ridx,cidx) 做着完全相同的工作:索引 Array 和 Sheet 的行和列。摆脱其中一个。
  • 我这样做了,但没有用,我遇到了同样的错误。
  • 哪一行触发了错误?顺便说一句,它可以是从 sheet.colsout[ridx][cidx] = sheet.getCell(j, i).value; 的一部分的任何东西

标签: arrays algorithm actionscript-3 apache-flex


【解决方案1】:

您正在尝试将单元格值分配给输出数组中不存在的位置。

在第一个i 循环中,您分配out[0] = new Array();,然后在j 循环中,您将设置out[0][0] = sheet.getCell(0,0).value; 在第二个j 循环中,您将设置out[1][0] = sheet.getCell(1,0).value;

在这种情况下,sheet.getCell(1,0) 可能会返回 null,但不管它是否返回,out[1] 为 null,因此您的代码将转换为 null[0] = ...——这将触发您看到的错误。

您可以通过在内部循环中交换 ij 来解决此问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-08-30
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多