我正在尝试在Javascript中动态创建“ 2D”数组,但显然,它更像是数组数组。数组中的每个数组(我将在这里称为“第二维数组”)都是根据用户上传的文件动态分配的。该文件的格式为:
表示文件中图形所代表的行数的整数。
表示构成该图形的一条线的坐标数的整数。
该行中的坐标,每对之间用换行符分隔。
表示图形下一行中坐标数的另一个整数。
该行中的坐标,每对之间用换行符分隔。
...等
例如:
3
3
5.0 2.0
3.4 6.7
7.8 9.6
6
5.0 2.0
3.4 6.7
7.8 9.6
8.9 7.8
9.6 4.3
3.7 2.7
4
4.0 4.0
7.8 5.0
3.8 8.3
2.1 7.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.log(fileArray [i])返回正确的数字,但是当我使用lineArray [j] .length时,由于某种原因,答案始终是1。我已经检查了Javascript中2D数组的许多其他来源,检查第二维数组长度的方法始终适用于它们。
[请帮助,我知道这可能只是我犯的一些愚蠢的错误。
我正在尝试在Javascript中动态创建“ 2D”数组,但显然,它更像是数组数组。数组中的每个数组(在这里我将其称为“第二维数组”)是...
也许您可以“忽略”问题。如果console.log(fileArray[i])
确实给出了正确的数字,则可以在下面的声明中使用它:
我是一个白痴,没有将我的字符串转换为整数。因此,我将数组的长度设置为等于字符串“ 3”(即1长),而不是3。解决方法是更改