簡體   English   中英

為什么我的平均函數返回 NaN?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM