2016-06-08 50 views
0

我想操作csv数据。 [这是csv文件] [1]读取csv数据到数组并执行操作

[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:"" 
} 

这将可以很容易地做减法运算。这个怎么做?我感到困惑。如果我不清楚,请提一提。

回答

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 
    } 
});  
+0

再一次,我想不出如何获得阵列上的一天,mxt和mnt。我这样做:'type [i] = line [0] [i]; max [i] =行[1] [i]; min [i] = line [2] [i];'我希望你明白。 –

0

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

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

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

那么你将有你的项目数组中所需要的数据,这样你就可以做你的减法这样。

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