javascript - 2D Javascript 数组未返回“第二维数组”的正确长度
问题描述
我正在尝试在 Javascript 中动态创建一个“2D”数组,但显然它更像是一个数组数组。数组中的每个数组(我在这里称为“第二维数组”)是根据用户上传的文件动态分配的。文件格式为:
表示文件表示的图形中的行数的整数。
表示构成该图形线条的坐标数的整数。
该行中的坐标,每对由换行符分隔。
另一个整数,表示绘图中下一行的坐标数。
该行中的坐标,每对由换行符分隔。
...ETC。
例如:
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 中的二维数组,这检查第二维数组长度的方法总是适用于他们。
请帮忙,我知道这可能只是我犯的一些愚蠢的错误。
解决方案
也许你可以“忽略”这个问题。如果console.log(fileArray[i])
确实给出了正确的数字,您可以在下面的 for 语句中执行此操作:
for(var k = 0; k < lineArray[i]-1; k++, i++) {
lineArray[j][k] = fileArray[i];
}
-1 因为你事先用 i++ 递增它。或者你只是在递增之前声明一个新的 var 并在你的 for 语句中使用它。可能有点懒惰的欺骗方式,但您的代码可能会按预期工作。
推荐阅读
- javascript - 取消选择突出显示的行
- php - Preg 允许空白记录
- python - 当我尝试使用 Selenium 和 Python 在 Instagram 帖子的“某人和其他人喜欢”中单击“其他人”时,StaleElementReferenceException
- c# - 如何使用 CMake 为 Visual Studio 解决方案设置程序集引用?
- ios - 品牌应用程序中使用的主应用程序图标
- php - 为什么 post 方法检测不到提交的名称?
- java - 从 Parse Server 的 ParseFile 取回数据时出现异常
- xss - Rails 5 erb 不会转义 html
- html - 使用Vue Javascript将JSON数据提取到html文件中的表中的问题
- amazon-web-services - RDS 数据传输成本公共与私有端点