尝试使用JavaScript方法计算平均值的问题

时间:2019-03-20 02:18:56

标签: javascript

由于某种原因,我试图从一组对象计算平均得分,但出现以下错误:

[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数组如下:

enter image description here

4 个答案:

答案 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);
}