我使用csv-parser来解析我拥有的csv文件。然后,当它解析每一行时,我会检查行中的每个值以获得最小值和最大值。
我的问题是我的最大值在COL和ROW列中保持为99。当他们的最大行数约为200行时,300行为col。我不确定那里发生了什么,据我所知,我的方法应该有效。
以下是我的相关代码:
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
答案 0 :(得分:5)
您正在比较字符串而不是数字:
$ node
> '99' > '300'
true
因此,在进行任何比较之前,请先将data[k]
转换为数字:
var value = Number(data[k]);