Javascript:解析一个txt文件,将数据传递给一个数组
Javascript: Parsing a txt file, passing the data to an array
晚上好。我对Javascript真的很陌生,我一直在学习一些课程来帮助我完成一个和朋友一起做的小项目。
我的问题是,我使用Javascript读取一个文本文件(我通过Java程序脱机算法生成),它具有以下形式:
[[37.928],[23.6965]]
[[37.9305],[23.69675]]
[[37.9315],[23.69775]]
[[37.9335],[23.69975]]
[[37.9350],[23.69999]]
下面的Javascript尝试解析该文件,并将这些值作为数组返回给我,其中每行是数组中的一行。
<iframe id="frmFile" src="test.txt" onload="LoadFile();" style="display: none;"></iframe>
<script type="text/javascript">
var nodeArray=new Array();
function LoadFile() {
var oFrame = document.getElementById("frmFile");
var strRawContents = oFrame.contentWindow.document.body.childNodes[0].innerHTML;
while (strRawContents.indexOf("'r") >= 0)
strRawContents = strRawContents.replace("'r", "");
arrLines = strRawContents.split("'n");
for (var i = 0; i < arrLines.length; i++) {
nodeArray = arrLines[i];
}
}
问题是,如果我离开最后一行并尝试打印结果,它通常会出现(整行),当我尝试填充数组时,它只在每行中输入一个字符,最终结果为[[37]。而不是线条。我做错了什么?
应该可以:
var nodeArray=new Array();
function LoadFile() {
var oFrame = document.getElementById("frmFile");
var strRawContents = oFrame.contentWindow.document.body.childNodes[0].innerHTML.replace(/'r/g, '');
var arrLines = strRawContents.split("'n");
arrLines.forEach(function (line) {
nodeArray.push(JSON.parse(line));
});
}
不使用JSON,您也可以将该行推入数组:
var arrLines = strRawContents.split("'n");
for (var i = 0; i < arrLines.length; i++) {
nodeArray.push(arrLines[i]);
}
console.log( arrLines ); // see what we have here.
看起来您依次将每个字符串分配给nodeArray,然后我假设您稍后将循环通过nodeArray并查看nodeArray[0], nodeArray[1]等。当您这样做时,nodeArray[0]将是字符串中的第一个字符,而不是数组中的第一个字符串。在JavaScript中,任何变量都可以保存任何类型的值,而您正在用字符串替换数组。数组是一系列对象(在本例中是字符串),而字符串是一系列字符。您可以使用相同的语法访问任意一个中的连续元素。
如果你想把每一行都添加到nodeArray中,这样做:
for ( var i = 0; i < arrLines.length; ++i )
{
nodeArray.push(arrLines[i]);
}
…但你甚至不需要将arrLines复制到另一个数组。arrLines是你想要的数组,如果我没理解你在做什么的话。所以只要这样做:
nodeArray = strRawContents.split("'n");
然后跳过循环。在这种情况下,不要在开始时将new Array()赋值给nodeArray,因为无论如何您都会用另一个数组替换该值。
或者如果您想将行解析为JSON对象,
nodeArray = new Array();
for ( var i = 0; i < arrLines.length; ++i )
{
nodeArray.push(JSON.parse(arrLines[i]));
}
相关文章:
- 动态构建一个数据表与scriplets
- 单击一个数据表,填充第二个数据表
- jquery获取一个数据标记并使用它做一些事情
- 在JSON中创建一个数据对(不是字典,而是两个独立的数据)
- 在FB.api函数中创建一个数据项目
- AngularJS从另一个数据模型访问数据模型
- 如何检测一个数据角色=“页面”中对特定列表视图项的单击,并在另一个数据上显示相应的数据
- 在 Backbone js 中永久引用来自另一个数据的数据
- Canvas getImageData() 为了获得最佳性能.提取所有数据或一次提取一个数据
- 我有一个数据列表,我将其转换为 Ul 和 li 的列表,现在我希望这个列表在 JSP 中显示为树
- jQuery 查找具有一个数据键和多个值的数据属性
- 如何在我的高图表饼图中获取一个数据标签,这是一个字体很棒的图标
- 如何从一个数据数组绘制图表并从另一个数据数组在图表上制作标签?高图表 v.4.0.4.
- 更新其中一个数据表单元格的多个下拉值的最佳方法是什么
- jQuery Mobile - 如何在从一个数据角色页面移动到另一个数据角色页面时传递参数
- 谷歌图表API:一个数据系列,两个垂直轴
- 为什么这个ajax请求有一个数据字符串,里面有一堆带破折号的数字
- 可以't使用jquery在selected中选择一个数据
- 我在angular js中调用一个数据抛出json,但不接收数据为什么
- JavaScript中的Ajax只发送数组中的最后一个数据