Javascript将对象添加到数组

时间:2018-05-26 01:18:29

标签: javascript node.js

在代码中,我尝试使用.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},...]

输出

[]

1 个答案:

答案 0 :(得分:0)

您必须在console.log回调中将fs.readFile只在上面一行 - 因为它是异步并且在读取文件之前执行日志。