由于某种原因,我试图从一组对象计算平均得分,但出现以下错误:
[Vue warn]: Error in render: "TypeError: discountReviews[i] is undefined"
我在我的方法中使用简单的for来计算平均值:
getAverage: function(discount){
let discountReviews = discount.discountreviews;
if(discountReviews.length == 0){
return 5;
}
else{
let total = 0;
console.log(discountReviews.length);
for(var i=0; i<= discountReviews.length; i++){
total = parseInt(total) + parseInt( discountReviews[i].rating);
}
let average = Math.ceil(total / discountReviews.length);
return average;
}
},
我的discountreviews数组如下:
答案 0 :(得分:0)
for(var i=0; i<= discountReviews.length; i++){
total = parseInt(total) + parseInt( discountReviews[i].rating);
}
javascript使用基于0的计数器。因此,如果discountReviews的长度为1,则最后一个循环将计算未定义的discountReviews[1]
。因此,将代码更改为
for(var i=0; i < discountReviews.length; i++){
total = parseInt(total) + parseInt( discountReviews[i].rating);
}
答案 1 :(得分:0)
更改您的for loop
:
for(var i=0; i < discountReviews.length; i++){
i
不能等于数组长度,数组将超出范围。
答案 2 :(得分:0)
数组是从零开始的索引。
i <= discountReviews.length
^
删除等号
i < discountReviews.length
答案 3 :(得分:0)
for循环将比所需的时间多重复一遍,并访问第n + 1个索引,该索引是未定义的。
尝试将其更改为
for(var i=0; i < discountReviews.length; i++){
total = parseInt(total) + parseInt( discountReviews[i].rating);
}