javascript - 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},...]
输出
[]
解决方案
您必须在console.log
上面只放一行 - 在您的fs.readFile
回调中 - 因为它是异步的,并且在读取文件之前执行日志。
推荐阅读
- node.js - 如何修复 io.appium.java_client.service.local.InvalidServerInstanceException:未安装 NodeJS 或其可执行文件不在 PATH 中
- javascript - 带有窗口滚动事件的 Mouseenter 和 mouseleave 事件
- python - 在 python-Dash-base64 中读取文件编码的问题
- python - 为什么 __init__ 必须扩展和附加?
- node.js - node.js talib 计算简单移动平均线不同于 binance 和 tradingview
- wordpress - Firefox 快捷方式图标文本未大写
- docker - MS .NET 映像不会拉到 Windows 10 Home 上的 Docker 桌面
- c++ - 我应该使用 x = -x 将负数转换为正数,反之亦然(在 C++ 中)?
- html - 如何使上一个站点的 div 出现在当前站点上?
- c++ - 带有 CMake 的 Qt Creator 6.1 中的“对 QAxObject 的未定义引用”