Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs解析返回错误值的最小值和最大值_Node.js_Csv - Fatal编程技术网

Node.js Nodejs解析返回错误值的最小值和最大值

Node.js Nodejs解析返回错误值的最小值和最大值,node.js,csv,Node.js,Csv,我正在使用解析我拥有的csv文件。然后在解析每一行时,我检查行中的每一个值以获得最小值和最大值 我的问题是,我的max在COL和ROW列中一直显示为99。当他们的最大值是200左右的行和300左右的列。我不知道发生了什么,因为我知道我的方法应该工作 这是我的相关代码: var mins = {} var maxs = {} function loadCSV(finishedCallback) { console.log("Loading csv..."); fs.createRe

我正在使用解析我拥有的csv文件。然后在解析每一行时,我检查行中的每一个值以获得最小值和最大值

我的问题是,我的max在COL和ROW列中一直显示为99。当他们的最大值是200左右的行和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
      })
}

我有一种感觉,我可能很愚蠢,错过了一些明显的东西:p

你在比较字符串而不是数字:

$ node
> '99' > '300'
true
因此,在进行任何比较之前,请先将
数据[k]
转换为数字:

var value = Number(data[k]);

您正在比较字符串而不是数字:

$ node
> '99' > '300'
true
因此,在进行任何比较之前,请先将
数据[k]
转换为数字:

var value = Number(data[k]);

这是我第三次这样做,假设库使用数字而不是字符串。我真的需要开始检查:这是我第三次这么做了,假设库使用数字而不是字符串。我真的需要开始检查:P