使用Javascript从文本文件中分离数据

使用Javascript从文本文件中分离数据,javascript,html,arrays,text-files,Javascript,Html,Arrays,Text Files,我正在创建一个分析页面,使用文本文件中存储的数据。文本文件用于my highcharts图形,并按如下方式分开: November 7th 6AM,19.8 November 7th 6PM,19.8 November 8th 6AM,20.4 November 8th 6PM,14.6 November 9th 6AM,15.9 November 9th 6PM,15.1 November 10th 6AM,16.4 November 10th 6PM,16.4 我希望将这些数据分成12个日

我正在创建一个分析页面,使用文本文件中存储的数据。文本文件用于my highcharts图形,并按如下方式分开:

November 7th 6AM,19.8
November 7th 6PM,19.8
November 8th 6AM,20.4
November 8th 6PM,14.6
November 9th 6AM,15.9
November 9th 6PM,15.1
November 10th 6AM,16.4
November 10th 6PM,16.4
我希望将这些数据分成12个日历窗格,显示每个月的总体差异。例如,如果一个日期的值为16,然后在下一次读取时它下降到10,则取该月发生次数的累计总和


如何确保它以正确的顺序读取文本文件,并检查下一个值是否低于10,并在某个地方与之吻合?

Yo可以使用jQuery将文件数据分离到数组中

$(document).ready(function() {
    //fetch text file
    $.get('text.txt', function(data) {
        //split on new lines
        var lines = data.split('\n');
        for(var i=0;i<lines.length;i++) {
            // use lines[i] the way you want
        }
    });
});
这样,您可以分离数据并根据需要使用它。

您需要

  • 获取数据文件
    • 人们通常使用AJAX(XMLHttpRequest)来实现这一点
  • 分开你的数据点
    • 您的数据似乎足够整洁,因此您可以使用
      line.split(“”[0]
      获取文件中每一行的月份名称,并使用
      line.split(“”,“,”[1]
      获取值。将文本拆分为行通常与
      文本一样简单。拆分(“\n”)
  • 迭代结果
    • 对于您现在拥有的每个月值对,比较月份的名称。如果它是一个匹配项,并且该值已更改
      x
      ,则在您的账簿中增加一个值,例如
      差异[monthName]+
      。保存名称-值对并继续
  • 例如:
    //获取数据
    var req=新的XMLHttpRequest();
    req.onreadystatechange=函数(){
    如果(req.readyState==4&&req.status==200){//如果请求完成,状态代码为“OK”
    handleImportantData(请求响应文本);
    }
    };
    //定义要使用异步获取URL方法的请求。
    请求打开(“GET”,“maintal_data.txt”,true);
    请求发送();
    函数句柄重要数据(数据){
    var-treshold=5.0;
    变量月份={};
    var差异={};
    //单独的数据点。
    变量行=数据分割(“\n”);
    行。forEach(函数(行){
    //如果数据格式不正确,| | 0.0部分将值设置为零。
    //我们将值解析为浮点数,以防止它保存为字符串,
    //这将使其上的算术运算无法按预期工作。
    月[line.split(“”[0]]=parseFloat(line.split(“”,“”[1])| | 0.0;
    });
    //找出差异。
    前一个变量={
    姓名:“,
    数值:0.0
    };
    for(变量名称,以月为单位){
    //如果还没有,则使用三元操作(包括NOP)初始化数据点。
    差异[名称]?{}:差异[名称]=0.0;
    //如果我们仍然在谈论与以前相同的月份和价值
    //已更改超过我们的treshold,请将其另存为差异。
    如果name===previous.name&&Math.abs(previous.value-months[name])>treshold{
    差异[名称]+;
    }
    以前的={
    姓名:姓名,,
    价值:月[名称]
    };//将此设置为上一个值。
    }
    //在这里,我们已经准备好差异数据存储在变量差异中。
    }
    “12个日历窗格中的数据”-显示预期结果的外观
    var a = s.indexOf(',');
    var b = s.substring(a,4);