首页 > 解决方案 > Javascript将对象添加到数组

问题描述

在代码中,我尝试使用 .push() 方法将多个对象添加到数组中。当我使用console.log记录所有对象时,所有对象都是有效的并且类型为object,但代码运行后的数组仍然为空。

这是代码: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},...]

输出

[]

标签: javascriptnode.js

解决方案


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


推荐阅读