#javascript
#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 выглядит следующим образом:
Комментарии:
1.
<=
-><
поскольку массивы в javascript основаны на 0
Ответ №1:
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);
}
Ответ №2:
Измените свой for loop
:
for(var i=0; i < discountReviews.length; i ){
i
не может быть равно длине массива, массив выйдет за пределы.
Ответ №3:
Массивы представляют собой индекс, основанный на нуле.
i <= discountReviews.length
^
Удалите символ равенства
i < discountReviews.length
Ответ №4:
Ваш цикл for будет повторяться на один раз больше, чем необходимо, и получит доступ к индексу nth 1, который будет неопределенным.
попробуйте изменить его на
for(var i=0; i < discountReviews.length; i ){
total = parseInt(total) parseInt( discountReviews[i].rating);
}