在Flex中将列数组转换为行数组

时间:2015-03-25 16:51:50

标签: arrays algorithm actionscript-3 flex

我试图创建一个多维数组来保存数据但是我得到一个错误(" TypeError:错误#1010:一个术语未定义且没有属性。")。

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

1 个答案:

答案 0 :(得分:0)

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

在第一个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[0] = ... - 这会触发你看到的错误。

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