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

Converting Column Array to Rows Array in Flex

我正在尝试创建一个多维数组来保存数据,但出现错误 ("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 循环中,您分配 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) 可能 return null,但无论是否如此,out[1] 都是 null,因此您的代码转换为 null[0] = ... -- 这将触发您看到的错误。

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