我是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
函数的预期吗?请帮忙
答案 0 :(得分:4)
文件末尾是否有换行符?如果是这样,最后一个数组项将是一个空字符串