2D Javascript数组未返回“第二维度数组”的正确长度

2D Javascript数组未返回“第二维度数组”的正确长度,javascript,arrays,Javascript,Arrays,我试图用Javascript动态创建一个2D数组,但显然它更像是一个数组数组。数组中的每个数组(这里我将调用一个二维数组)都是根据用户上传的文件动态分配的。该文件的格式为: 整数,表示文件所代表图形中的线数 整数,表示构成该图形线条的坐标数 该行中的坐标,每对由新行分隔 另一个整数,表示图形中下一行的坐标数 该行中的坐标,每对由新行分隔 ……等等 例如: 三, 三, 5.02.0 3.4.6.7 7.8.9.6 六, 5.02.0 3.4.6.7 7.8.9.6 8.9.7.8 9.6.4.3

我试图用Javascript动态创建一个2D数组,但显然它更像是一个数组数组。数组中的每个数组(这里我将调用一个二维数组)都是根据用户上传的文件动态分配的。该文件的格式为:

整数,表示文件所代表图形中的线数

整数,表示构成该图形线条的坐标数

该行中的坐标,每对由新行分隔

另一个整数,表示图形中下一行的坐标数

该行中的坐标,每对由新行分隔

……等等

例如:

三,

三,

5.02.0

3.4.6.7

7.8.9.6

六,

5.02.0

3.4.6.7

7.8.9.6

8.9.7.8

9.6.4.3

3.7.2.7

四,

4.04.0

7.8.5.0

3.8.3

2.17.6

你明白了

以下是我在文件转换为字符串后解析该文件的代码:

function parseDat(contents) {
    var dirtyArray = contents.split("\n");
    var fileArray = dirtyArray.filter(function (n) { return (n !== undefined && n !== null && n !== ""); });


        var lineArray = new Array(parseInt(fileArray[i], 10) + 1);
        lineArray[0] = fileArray[i];

        i++;

        for(var j = 1; j < lineArray.length; j++) {
            lineArray[j] = new Array(fileArray[i]);
            console.log(fileArray[i]);
            console.log("2d array length = " + lineArray[j].length);
            i++;
            for(var k = 0; k < lineArray[j].length; k++, i++) {
                lineArray[j][k] = fileArray[i];
            }

        }

        return lineArray;


}
基本上,我检查二维数组的长度,在我给出的示例文件中,第一行的长度应该是3。console.logfileArray[i]返回正确的数字,但是当我使用lineArray[j].length时,由于某些原因,答案总是1。我在Javascript中检查了很多其他2D数组的源代码,这种检查2D数组长度的方法对它们总是有效的


请帮忙,我知道这可能只是我犯的一些愚蠢的错误。

也许你可以忽略这个问题。如果console.logfileArray[i]确实给出了正确的数字,那么您可以在下面的for语句中使用它:

for(var k = 0; k < lineArray[i]-1; k++, i++) {
    lineArray[j][k] = fileArray[i];
}
-1,因为您预先使用i++将其递增。 或者在递增之前声明一个新的var,并在for语句中使用它。
这可能是一种懒惰的作弊方法,但您的代码可能会按预期工作。

我是个白痴,没有将字符串转换为整数。因此,我将数组的长度设置为字符串3,字符串3的长度为1,而不是3。解决办法是改变

lineArray[j] = new Array(fileArray[i]);


我是个白痴,没有把字符串转换成整数。因此,我将数组的长度设置为字符串3,字符串3的长度为1,而不是3。
lineArray[j] = new Array(parseInt(fileArray[i], 10));