Javascript 试图获得平均值时未定义
我在数组中显示5个数据点,然后在数组中显示5个数据点,最后用这2个数组得到一个全局数组 所以我想要的是:Javascript 试图获得平均值时未定义,javascript,amazon-web-services,amazon-cloudwatch,Javascript,Amazon Web Services,Amazon Cloudwatch,我在数组中显示5个数据点,然后在数组中显示5个数据点,最后用这2个数组得到一个全局数组 所以我想要的是: 如果多数平均值等于200,则在数组中显示“向上” 如果大多数平均值不同于200,则将“向下”显示到数组中,并获取平均值不同于200的第一个时间戳 我正在尝试执行某项操作,但出现了一个错误: 无法读取未定义的属性“Average” 预期结果: [“向上”、“向下”] [null,2019-01-15T08:26:00.000Z] //****脚本是否继续 getAllMetrics(区域)
- 如果多数平均值等于200,则在数组中显示“向上”
- 如果大多数平均值不同于200,则将“向下”显示到数组中,并获取平均值不同于200的第一个时间戳
//****脚本是否继续
getAllMetrics(区域)。然后(res=>{
控制台日志(res);
/*
[{时间戳:2019-01-15T08:26:00.000Z,平均值:200},
{时间戳:2019-01-15T08:32:00.000Z,平均值:200},
{时间戳:2019-01-15T08:26:00.000,平均值:200},
{时间戳:2019-01-15T08:29:00.000Z,平均值:200},
{时间戳:2019-01-15T08:35:00.000Z,平均值:200}],
[{时间戳:2019-01-15T08:26:00.000Z,平均值:400},
{时间戳:2019-01-15T08:32:00.000Z,平均值:400},
{时间戳:2019-01-15T08:26:00.000,平均值:400},
{时间戳:2019-01-15T08:29:00.000Z,平均值:200},
{时间戳:2019-01-15T08:35:00.000Z,平均值:200}]]*/
tabRES=[];
//环区
var i=-1;
TsTAB=[null,null,null];
var a=-1;
while(tabReg[++a]){
TsTAB.push(空);
}
while(res[++i]){
平均值={
上升:0,,
下跌:0
};
Ts=“”;
RespARRAY=res[i];
var j=-1;
while(RespARRAY[++j]){
if(RespARRAY[j].平均==200){
Avg.up++//如果200->up
//和推送阵列TS
}否则{
平均向下+/->向下
//取回最后一个
Ts=Ts | | RespARRAY[j].时间戳;
}
}
如果(平均上升>平均下降){
tabRES.push(‘向上’);
}否则{
tabRES.push('down');
TsTAB[i]=TsTAB[i]|Ts;
}
}
console.log(tabRES);
console.log(TsTAB);
}).catch(错误=>{
控制台日志(err);
});
错误是由while(RespARRAY[++j])
引起的。循环需要一个结束条件。目前,它会遍历您的五个值并查找不存在的第六个值。因此,RespARRAY[j]
是未定义的,javascript无法找到该未定义值的“average”属性
你可以从
if(j > 4){ break; }
或者更好
if(j >= RespARRAY.length){ break; }
或者你可以使用for循环。
(见附件)
请注意,您会在外部(
i
)循环中发现同样的问题。您唯一使用Average
的地方是RespARRAY[j]。Average
。由于错误说明无法读取未定义的属性平均值
,这意味着RespARRAY[j]
在某个点上未定义。哦,好的,当我执行console.log(RespARRAY[j])时,我有一个未定义的。。。