javascript - 将对象推入数组
问题描述
我试图将对象添加到数组中。但是当我控制台日志得到空数组时。请检查我做错了什么。(当我控制台日志而不是推送它工作正常)
const fs = require("fs");
const XLSX = require("xlsx");
const axios = require('axios');
// Read the file into memory
const workbook = XLSX.readFile("excel.xlsx");
let worksheet = workbook.Sheets[workbook.SheetNames[0]];
// 3683
const jsonArr = [];
function addData() {
for(let i = 2; i < 4; i++) {
var add = worksheet[`C${i}`].v;
axios.get('https://api.opencagedata.com/geocode/v1/json', {
params : {
q:add,
key:keys
}
}
)
.then(function(res) {
// console.log(res.data.results[2].geometry);
jsonArr.push(res.data.results[2].geometry);
})
.catch(function(err) {
console.log(err);
})
}
}
addData();
console.log(jsonArr);
解决方案
如果使用 Promise,这是一个常见问题。相反,尝试在其中创建结构this()
然后返回它,这样您就可以从链中检索它,例如:
const result = axios.get(...).then(res => res.data.results[2].geometry);
然后例如将其添加到外部数组中。
或者改为使用async/await
以确保请求已正确完成:
const result = await axios.get(...);
推荐阅读
- jquery - 单击按钮时按空格键
- javascript - javascript 错误:arguments[0].setAttribute 不是函数
- ios - 如何在快速关闭第二个视图控制器后启用带有视图的自定义视图控制器
- python - 如何在绘图条形图上左对齐文本(包含示例图像)[Plotly-Dash]
- php - 如何使用mysqli php从多个表中输出所有数据
- c# - 为什么 fontawesome 图标没有应用于 gridview 图标?
- elasticsearch - 在弹性搜索的索引中查找唯一文档
- reactjs - 使用 CucumberJS 和 Selenium 进行自动化测试时,是否可以单击 Blueprintjs Radio 组件的 Radio 按钮?
- javascript - React Native Navigation v1 在 statTabBasedApp 中崩溃
- r - 是否有限制列表元素长度的 R 函数?