在代码中,我尝试使用.push()方法将多个对象添加到数组中。当我使用console.log记录它们时,所有对象都是有效的和类型对象,但代码运行后的数组仍为空。
这里是代码: app.js
const fs = require('fs');
var outdata = {};
var objArray = [];
fs.readFile('rawdata.json', 'utf8', (err, data) => {
debugger;
let dataObj = JSON.parse(data);
let tmpObj = {};
Object.keys(dataObj).map(n => {
let tmp = dataObj[n].search(/(\d{1,2}:\d{2}:\d{2})/g);
if (tmp !== -1) {
tmpObj = {};
tmpObj.crafttime = dataObj[n];
return true;
} else {
//make obj
let value = dataObj[n].split(' ');
tmpObj.type = value[0]; //type
tmpObj.name = value[1].toLowerCase(); //name
tmpObj.link = `abc.com/${value[1]}`;
//appends obj
objArray.push(tmpObj);
return false; //break
}
});
});
console.log(objArray);
控制台输出 预期:
[{obj},{obj},...]
输出
[]
答案 0 :(得分:0)
您必须在console.log
回调中将fs.readFile
只在上面一行 - 因为它是异步并且在读取文件之前执行日志。