[英]Extending data of an existing object from an array
我从 JSON 格式的 API 接收数组。 我想将它们合并到名为的嵌套数组中,该数组由对象graphData
组成。 如何通过一个条目扩展数据对象?
mounted() {
var i = 0;
const axios = require('axios');
//Usage
axios.get("https://3.11.40.69:9001/app/usageUnitForCustomer/1521/2019-12-30/2020-12-30")
.then(response => {
const time = response.data.event_time; //["2019-12-30T14:06:21.000Z", "2019-12-30T14:06:21.000Z"]
const unit = response.data.unit; //[44.67, 75.89]
for (i = 0; i < 1; i++) {
if (time[i] !== time[i + 1]) {
this.graphData[1].data.time[i] = unit[i];
}
}
})
//Revenue
axios.get("https://3.11.40.69:9001/app/revenueUnitForMachine/345/2019-12-30/2020-12-30")
.then(response => {
const time = response.data.event_time; //["2019-12-30T14:06:21.000Z", "2019-12-30T14:06:21.000Z"]
const unit = response.data.revenue; //[44, 75]
for (i = 0; i < 10; i++) {
if (time[i] !== time[i + 1]) {
this.graphData[0].data.time[i] = unit[i];
}
}
})
},
data() {
return {
graphData: [
{name: 'Revenue', data: {}},
{name: 'Usage', data: {}}
]
}
}
执行上述代码后,两个数据对象仍然是空的。 结果如下所示,并显示以下错误消息:
0:
name: "Revenue"
data: Object []
1:
name: "Usage"
data: Object []
Uncaught (in promise) TypeError: Cannot set property '0' of undefined
预期结果:
graphData: [
{name: 'Revenue', data: {'2019-12-30T14:06:21.000Z': 448, '2019-12-30T14:06:22.000Z': 44}},
{name: 'Usage', data: {'2019-12-30T14:06:21.000Z': 448, '2019-12-30T14:06:22.000Z': 44}}
]
有人有想法吗?
您无法从 .then() 块内访问外部变量。 您应该能够将整个外部块变为async
并使用await
进行axios
调用。
尝试这样的事情:
async mounted() {
var i = 0;
const axios = require('axios');
//Usage
const response = await axios.get("https://3.11.40.69:9001/app/usageUnitForCustomer/1521/2019-12-30/2020-12-30");
const time = response.data.event_time;
const unit = response.data.unit;
for (i = 0; i < 1; i++) {
if (time[i] !== time[i + 1]) {
this.graphData[1].data.time[i] = unit[i];
}
}
...
...继续使用await
来处理其余的axios
调用。
我看到的一个问题是你在this.graphData[1].data.time[i] = unit[i];
访问time[i]
this.graphData[1].data.time[i] = unit[i];
但它没有在您的对象中定义。
也许将它初始化为数组有帮助?
data() {
return {
graphData: [
{name: 'Revenue', data: { time: [] }},
{name: 'Usage', data: { time: [] }}
]
}
}
编辑:好的,在您编辑预期结果后,我看到了另一个问题。
您可以尝试设置这样的值吗?
this.graphData[1].data[time[i]] = unit[i];
注意time[i]
周围的额外[]
time[i]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.