将csv数据读取到数组并执行操作

时间:2016-06-08 10:43:42

标签: javascript node.js csv

我正在尝试对csv数据进行操作。 [这是csv文件] [1]

[1]:http://pastebin.com/MzLmQtye。我必须得到MxT和MnT的减法结果。

    var fs = require('fs'),
    fileName = "weather.csv",
    bufferString;
var arr = new Array();


fs.readFile(fileName, "utf8", function(err, data) {
    if(err){
        console.log(err);
        return;
    }
    bufferString = data.toString();
    arr = bufferString.split('\n');
    //arr = arr.split(',');
    console.log(arr[1][1]);
});    

从上面的代码中,我得到了逗号以及数组数据。 split(,)也会出现TypeError: arr.split is not a function错误。这该怎么做。

我认为对我来说最好的想法是创建这样的对象:

1:{
    max:""
    min:""
}
2:{
    max:""
    min:""
}

这样可以轻松进行减法运算。这该怎么做?我很困惑。如果我不清楚,请提及。

2 个答案:

答案 0 :(得分:0)

迭代每一行并用逗号分隔。因此,将所有MxT和MnT值记录到控制台:

fs.readFile(fileName, "utf8", function(err, data) {
    if(err){
        console.log(err);
        return;
    }
    bufferString = data.toString();
    arr = bufferString.split('\n');
    var line;
    for(var i=0; i < arr.length; i++){
          line = arr[i].split(',');
          console.log(line[1]); // MxT
          console.log(line[2]); // MnT
    }
 });    

答案 1 :(得分:0)

您可以使用fast-csv而不是编写自己的解析器。

var csv = require('fast-csv');
var items = [];

csv.fromPath('weather.csv', {
        headers: true
    })
    .on("data", data => {
        items.push(data);
    });

然后,您将获得items数组中所需的所有数据,因此您可以像这样进行减法。

items[0].MxT - items[0].MnT;