2015-09-05 118 views
1

我正在使用csv-parser解析我所擁有的csv文件。然後,在解析每一行時,我將檢查行中的每個值以獲取最小值和最大值。Nodejs解析最小值和最大值返回錯誤的值

我的問題是我的max在COL和ROW列中始終保持爲99。當他們的最大值爲大約200行和col爲300。據我所知我的方法應該工作,我不知道那裏發生了什麼。

這裏是我的相關代碼:

var mins = {} 
var maxs = {} 
function loadCSV(finishedCallback) { 
    console.log("Loading csv..."); 
    fs.createReadStream(__dirname + '/data.csv') 
    .pipe(stream) 
    .on('data', function (data) { 
     for (var k in data) { 
       if (data.hasOwnProperty(k)) { 
        if (mins[k] == undefined) 
         mins[k] = data[k]; 
        if (maxs[k] == undefined) 
         maxs[k] = data[k]; 

        if (mins[k] > data[k]) 
         mins[k] = data[k]; 
        if (maxs[k] < data[k]) 
         maxs[k] = data[k]; 

       } 
      } 
     }).on('finish', function() { 
      console.log("Finished reading csv!") 
      finishedCallback(); 
      console.log("Maxs: " + JSON.stringify(maxs)); 
      console.log("Mins: " + JSON.stringify(mins)); 
      return true 
     }) 
} 

這裏是我的CSV的前幾行:(我知道重複的X和Y字段的,我不最終使用即可)

X,Y,X,Y,ROW,COL,EMH,EMV,ASP,DEM,SLOPE 
495118.8125,4469900.5,495118.80000,4469901.00000,0,79,15.56310,8.11320,285.65760,318.85077,0.12900 
495120.8125,4469900.5,495120.80000,4469901.00000,0,80,15.64225,8.12110,286.47190,318.87570,0.13107 
495122.8125,4469900.5,495122.80000,4469901.00000,0,81,15.76020,8.10590,287.70340,318.91686,0.13890 

我有一種感覺,我可能是愚蠢和缺少明顯的東西:P

回答

5

你是不是比較數字的字符串:

$ node 
> '99' > '300' 
true 

所以做任何比較之前,轉換data[k]多項第一:

var value = Number(data[k]); 
+0

這就是我所做的,假設一個圖書館用來代替串號第三次。我真的需要開始檢查:P –