2016-06-08 2 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 값을 다음과 같은 : 당신은 오히려 자신의 파서를 작성하는 것보다 이것에 대한 fast-csv을 사용할 수

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] = line [1] [i]; min [i] = line [2] [i]; '당신이 이해하기를 바랍니다. –

0

.

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; 
관련 문제