Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解析存储在数组中的数据_Javascript_Arrays_String_Object - Fatal编程技术网

Javascript 如何解析存储在数组中的数据

Javascript 如何解析存储在数组中的数据,javascript,arrays,string,object,Javascript,Arrays,String,Object,我有一个正在使用的CSV文件。我不想将其转换为具有键和值的对象。我希望能够创建更多的数组来存储不同的值 即温度 哼 小时 雪深等 所有这些都是具有7个值的数组 现在,csv是如何存储在数据数组中的 “2018年11月28日7:301128,-2.122,86.2,34.06,1.178320.2,20.4” ​ “2018年11月28日7:451129,-2.325,85.6,34.54,1.771325.5,30.72” ​ “2018年11月28日8:001130,-2.679,85.7,3

我有一个正在使用的CSV文件。我不想将其转换为具有键和值的对象。我希望能够创建更多的数组来存储不同的值 即温度 哼 小时 雪深等 所有这些都是具有7个值的数组

现在,csv是如何存储在数据数组中的

  • “2018年11月28日7:301128,-2.122,86.2,34.06,1.178320.2,20.4” ​
  • “2018年11月28日7:451129,-2.325,85.6,34.54,1.771325.5,30.72” ​
  • “2018年11月28日8:001130,-2.679,85.7,30.73,1.764312.1,28.98” ​
  • “2018年11月28日8:151131,-2.872,88,34.55,1.073306.6,25.65” ​
  • “2018年11月28日8:301132,-2.953,90.7,35.25,1.247311.2,30.06” ​
  • “2018年11月28日8:451133,-3.064,93.3,35,1.449312.6,30.13” ​
  • “2018年11月28日9:001134,-2.771,91.5,33.44,0.988311,28.27” ​ 长度:7
  • 第一列是时间戳,第二列是记录编号,第三列是温度,第四列是湿度,依此类推

    function get_Data(data) {
        "use strict";
        var fileData = new Array();
        data = data.split(/\r\n|\r|\n/);
        data = data.slice(Math.max(data.length - 7, 0));
        createGraph(data);
    } 
    
    我想要这样的数组 Tem=[-2.122,-2.325,-2.679,-2.872…]
    小时=[7:30,7:45,8:00,8:15…]

    简单-
    map
    split
    每个逗号,然后查看它应该是哪个项目的索引:

    var数据=[“2018年11月28日7:301128,-2.122,86.2,34.06,1.178320.2,20.4”,
    "11/28/2018 7:45,1129,-2.325,85.6,34.54,1.771,325.5,30.72",
    "11/28/2018 8:00,1130,-2.679,85.7,30.73,1.764,312.1,28.98",
    "11/28/2018 8:15,1131,-2.872,88,34.55,1.073,306.6,25.65",
    "11/28/2018 8:30,1132,-2.953,90.7,35.25,1.247,311.2,30.06",
    "11/28/2018 8:45,1133,-3.064,93.3,35,1.449,312.6,30.13",
    "11/28/2018 9:00,1134,-2.771,91.5,33.44,0.988,311,28.27",
    ];
    可变项目={
    日期:[],
    记录编号:[],
    温度:[],
    湿度:[],
    值5:[],
    值6:[],
    值7:[],
    值8:[],
    };
    Object.keys(items).forEach((key,index)=>items[key].push(data.map(str=>str.split(“,”[index]));
    
    控制台日志(项目)试试这个,它应该可以工作。我知道数据的位置,所以很容易分割并找到术语和日期

    var csv=document.getElementById(“csvFile”).innerHTML;
    函数get_Data(数据){
    var结果={terms:[],hours:[]}
    var r=data.split(/\r\n |\r |\n/);
    r、 forEach(函数(元素){
    if(元素!==“”&&element.length>1){
    变量项=元素。拆分(“,”[2]
    变量日期=新日期(元素拆分(“,”[0])
    
    var hour=date.getHours()+“:”+(date.getMinutes()你把一些事情搞混了。
    fileData
    在做什么(似乎没有用过)?而
    slice
    不是正确的方法

    相反,请尝试:

    function get_Data(csv) {
        csv = csv.replace(/[\r\n]+/gi,"\n"); // reduce line endings into single LF chars
        rows = csv.split("\n"); // split into array of rows
        var result = [];
        for (var i in rows) result.push(rows[i].split(",")); // split each row
        return result;
    }
    
    (编辑)如果只需要CSV数据的最后X行,请使用:

    function get_Data(csv,lastNumRows) { // get only the last <lastNumRows> rows
        csv = csv.replace(/[\r\n]+/gi,"\n"); // reduce line endings into single LF chars
        rows = csv.split("\n").slice(-lastNumRows); // split into array of rows
        var result = [];
        for (var i in rows) result.push(rows[i].split(",")); // split each row
        return result;
    }
    
    函数get_Data(csv,lastNumRows){//仅获取最后一行
    csv=csv.replace(//[\r\n]+/gi,“\n”);//将行尾减少为单个LF字符
    rows=csv.split(“\n”).slice(-lastNumRows);//拆分为行数组
    var结果=[];
    for(var i in rows)result.push(rows[i].split(“,”);//拆分每一行
    返回结果;
    }
    
    您实际上不必解析任何内容。您只需按逗号拆分即可。要创建列
    i的值数组,请执行以下操作:
    values=arr.map(str=>str.split(',')[i])
    。很多相关的问题:你能把每一个值都加起来吗?我们有前四个值,但每行有八个值。是的,第五个是雪深,第六个是速度第七个是WindDir_D1_WVT,第八个是SDT。没错,我不需要文件数据。我想要文件的最后7行。现在我知道你是如何使用
    切片的了。我编辑了我的答案,只得到最后7行。哦,但我也看到我误解了你原来的问题,你实际上需要这些列(例如,所有温度或所有湿度),不是行。我的错。我不想做定位,因为每次有新行时记录都会发生变化。这会影响数组中存储的值。我不知道这是否有意义,但@Jack Bashford做了同样的事情。我的解决方案是这样的,因为这样你就可以控制数据解析。比如一个小时。但是,是的,你做了什么