[英]Why does my averaging function return NaN?
我創建了一個類Car
並將該類的對象(car1、car2、car3)添加到數組中:
class Car{
constructor(prise){
this.prise = prise;
}
};
我還聲明了一個函數來確定數組中對象的平均價格:
function averageСost(arr) {
var total = 0;
for( var i = 0; i < arr.length; i++ ) {
total = ( total + arr[i] ) / arr.length;;
}
return total;
};
var car1 = new Car( 10000 );
var car2 = new Car( 20000 );
var car3 = new Car( 30000 );
var cars = [ car1, car2, car3 ];
console.log( averageСost( cars ) );
因為您無法添加Car
對象(您正在使用total + arr[i]
)。 您需要添加這些對象的prise
屬性。
另外,你的平均邏輯是錯誤的; 你在每次添加后除以數組長度,這會給你一個不正確的結果。 你的功能應該是:
function averageСost(arr) {
var total = 0,
i;
for(i = 0; i < arr.length; i++) {
total = total + arr[i].prise;
}
return total / arr.length;
}
您正在嘗試將汽車對象添加到另一個汽車對象,而您想將每輛車的價格加在一起。
function averageСost(arr) {
var total = 0;
for(var i = 0; i < arr.length; i++) {
total = (total + arr[i].prise) / arr.length;
}
return total;
}
另外,請修正價格的拼寫,因為它感覺不好
你可以做這樣的事情:
class Car{ constructor(prise){ this.prise = prise; } }; let array = []; array.push(new Car(1)); array.push(new Car(2)); array.push(new Car(3)); let avg = 0; if (array.length > 0) { let sum = 0; array.forEach((car) => sum += car.prise); avg = sum / array.length; } console.log(avg);
將您的平均成本函數更改為
function averageСost(arr) {
var total = 0;
for(var i = 0; i < arr.length; i++){
total = total + arr[i].prise;
}
total = total / arr.length;
return total;
};
問題是您在計算總數時調用的是一個對象而不是 Car 類中的數字。
在這一行:
total = ( total + arr[i] ) / arr.length;
應該:
total = ( total + arr[i].prise ) / arr.length;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.