我正在以这种格式编写对象
var eqres = [{"datapoints": [[1, 1530034200], [1, 1530034200]]}]
i have attached the image of consolelog
我正尝试通过像
一样访问1530034200和1530034200的值来进行更新eqres[0].datapoints[1][1] , eqres[0].datapoints[0][1]
我收到错误消息“无法读取未定义的属性'1'
我正在从api获取数据并将其写入eqres
var eqres ={};
var eqres = [{'datapoints': [] }];
var ee = this.doRequest({
url: urll,
headers:
{
'X-xxx': this.uname,
'Accept': 'application/json',
'X-xxx': timestamp,
'X-xxx': hash_string
},
method: 'GET'}).then(response => response.data.data.row)
.then(function(j)
{
var ff = j;
for (var i in ff)
{
eqres[0]['datapoints'].push([ff[i].col[1],ff[i].col[0]]);
};
})
我正在尝试这样更新
var now = Date.now();
for (var i = eqres.length -1; i >= 0; i--)
{
var series = eqres[i];
var decreaser = 0;
for (var y = series.datapoints.length -1; y >= 0; y--)
{
series.datapoints[y][1] = Math.round((now - decreaser) /1000) * 1000;
decreaser += 50000;
}
}
答案 0 :(得分:0)
在这种情况下,我总是使用以下调试代码:
console.log(eqres[0]);
console.log(eqres[0].datapoints);
console.log(eqres[0].datapoints[1]);
console.log(eqres[0].datapoints[1][1]);
现在告诉我夹线抛出错误并在上面显示一行结果。
答案 1 :(得分:0)
如果将eqres
数据点直接硬编码到变量中,则您的代码可以正常工作。我在想的是您正在尝试在异步API请求完成之前 访问数据点。在API完成后,尝试在另一个then
调用中运行修改代码:
var eqres ={};
var eqres = [{'datapoints': [] }];
var ee = this.doRequest({
url: urll,
headers:
{
'X-xxx': this.uname,
'Accept': 'application/json',
'X-xxx': timestamp,
'X-xxx': hash_string
},
method: 'GET'}).then(response => response.data.data.row)
.then(function(j) {
var ff = j;
for (var i in ff)
{
eqres[0]['datapoints'].push([ff[i].col[1],ff[i].col[0]]);
};
})
.then(function() {
var now = Date.now();
for (var i = eqres.length -1; i >= 0; i--)
{
var series = eqres[i];
var decreaser = 0;
for (var y = series.datapoints.length -1; y >= 0; y--)
{
series.datapoints[y][1] = Math.round((now - decreaser) /1000) * 1000;
decreaser += 50000;
}
}
});
现在,当您尝试修改数据点时,它们将对您可用。