使用NodeJS和node-csv,我正在尝试加载数组中的行。从模块中的示例:
// node samples/string.js
csv()
.from.string(
'#Welcome\n"1","2","3","4"\n"a","b","c","d"', {
comment: '#'
})
.to.array(function (data) {
console.log(data)
});
// [ [ '1', '2', '3', '4' ], [ 'a', 'b', 'c', 'd' ] ]
但是如果在函数内部(数据)我尝试将每一行添加到全局范围中定义的数组,它不会改变它。很明显我不了解JS变量范围,但解决这个问题的最佳模式是什么?
答案 0 :(得分:1)
看起来它正在改变rows变量,但是在推送行之前调用了console.log()调用。您可以使用.on('end')事件在推送函数后调用它。
var csv = require('csv');
var rows = new Array();
csv()
.from.string(
'#Welcome\n"1","2","3","4"\n"a","b","c","d"', {
comment: '#'
})
.to.array(function (data) {
rows.push(data);
console.log(rows);
}).on('end', function() {
logRows();
});
var logRows = function() {
console.log(rows);
}