Javascript代码返回undefined:执行输出中的Nan?

时间:2014-09-26 19:08:38

标签: javascript node.js

我是javascript的新手,并尝试学习一些基础知识。所以我写了一个小文件阅读脚本。以下是我的代码。

// Load the fs (filesystem) module
var fs=require('fs');

// Read the contents of the file into memory.
fs.readFile('example.txt', function (err, logData) {
  // If an error occurred, throwing it will
    //display the exception and end our app.
  if(err) throw err;
  // logData is a Buffer, convert to string.
  var text = logData.toString();

  var results = {};
  var lines = text.split('\n');
  lines.forEach(function(line){
    var parts = line.split(' ');
    var letter = parts[1];
    var count = parseInt(parts[2]);

    if (!results[letter]){
      results[letter] = 0;
    }
    results[letter] +=parseInt(count);
    });
  console.log(results);
}); 

我的输入文件是

2013-08-09T13:50:33.166Z A 2
2013-08-09T13:51:33.166Z B 1
2013-08-09T13:52:33.166Z C 6
2013-08-09T13:53:33.166Z B 8
2013-08-09T13:54:33.166Z B 5

example.txt 中的行数为5

wc -l example.txt 
5 example.txt

使用Node.js执行上述代码会导致

node my_parser.js 
[ '2013-08-09T13:50:33.166Z A 2',
  '2013-08-09T13:51:33.166Z B 1',
  '2013-08-09T13:52:33.166Z C 6',
  '2013-08-09T13:53:33.166Z B 8',
  '2013-08-09T13:54:33.166Z B 5',
  '' ]
{ A: 2, B: 14, C: 6, undefined: NaN }

example.txt 文件中只有五行?为什么列表中会添加一个额外的空字符串?这是split函数的预期吗?请帮忙

1 个答案:

答案 0 :(得分:4)

文件末尾是否有换行符?如果是这样,最后一个数组项将是一个空字符串