2014-09-19 100 views
-2

我試圖計算一週的平均溫度,但我不太清楚我會如何做到這一點。我嘗試了一些東西,但最終的結果將是'NaN'或'Infinity'。當然在這裏做得不對..計算陣列中對象屬性的平均值

這是我需要使用的代碼:

var temperatures; 

temperatures = new Array(); 

temperatures["monday"] = 23.5; 
temperatures["tuesday"] = 22.3; 
temperatures["wednesday"] = 28.5; 
temperatures["thursday"] = 23.5; 
temperatures["friday"] = 22.3; 
temperatures["saturday"] = 28.5; 
temperatures["sunday"] = 29.5; 

我得到它的工作時,陣列就像[0],[1],而不是含天弦,但我不知道如何做到這一點。此外,如果您有任何建議,請儘量保持代碼基本不變,因爲某些原因,「高級代碼」在我的課程中並不太受讚賞。

感謝您的閱讀。

+0

,如果你表現出你當前使用獲得的平均代碼這將是有益的,即使其返回錯誤的結果。 – symcbean 2014-09-19 09:23:12

+0

這似乎已經說明這裏: http://stackoverflow.com/questions/10359907/array-sum-and-average – billrousseau 2014-09-19 09:24:23

+1

你混合陣列(訪問由整數索引值)對象和(訪問值通過鍵) – Volune 2014-09-19 09:26:31

回答

2

平均只是總的溫度

var temperatures = {}, 
    length = 0, 
    total = 0; 

temperatures["monday"] = 23.5; 
temperatures["tuesday"] = 22.3; 
temperatures["wednesday"] = 28.5; 
temperatures["thursday"] = 23.5; 
temperatures["friday"] = 22.3; 
temperatures["saturday"] = 28.5; 
temperatures["sunday"] = 29.5; 

for (var day in temperatures) { 
    total += temperatures[day]; 
    length++; 
} 

var average = total/length; 

注意數組沒有命名的密鑰數量劃分,只能做對象

+0

現在不是'天'全球變量? (我不確定 - 這正是我的Netbeans代碼熒光筆顯示的內容)如果是這樣,最好還是將其他變量聲明爲最好? – 2017-06-30 21:19:39

+1

@Cold_Class - 好眼睛,只需在for循環中聲明即可解決該問題。 – adeneo 2017-06-30 21:27:52

0

嘗試:

var temperatures; 
 
    var sum = 0, 
 
     count = 0; 
 
    temperatures = new Array(); 
 
    
 
    temperatures["monday"] = 23.5; 
 
    temperatures["tuesday"] = 22.3; 
 
    temperatures["wednesday"] = 28.5; 
 
    temperatures["thursday"] = 23.5; 
 
    temperatures["friday"] = 22.3; 
 
    temperatures["saturday"] = 28.5; 
 
    temperatures["sunday"] = 29.5; 
 
    
 
    for (var prop in temperatures) { 
 
     if (temperatures.hasOwnProperty(prop)) { 
 
      count++; 
 
      sum += temperatures[prop]; 
 
     } 
 
    } 
 

 
    var average = (sum/count); 
 
    alert(average);

0

您應該嘗試Objec t代替Array,如果你希望鍵值對。

var temperatures; 

temperatures = new Object(); 

temperatures["monday"] = 23.5; 
temperatures["tuesday"] = 22.3; 
temperatures["wednesday"] = 28.5; 
temperatures["thursday"] = 23.5; 
temperatures["friday"] = 22.3; 
temperatures["saturday"] = 28.5; 
temperatures["sunday"] = 29.5; 

alert(temperatures["sunday"]); 

你會得到鍵值對JS對象, 你可以用它來平均:

var sum = 0; 
for(key in temperatures) 
{ 
    sum = sum+temperatures[key]; 
    console.log(temperatures[key]); 
} 
alert(sum/7); 

Check this Demo

+1

你試圖實現什麼。你有沒有仔細閱讀問題? – Manwal 2014-09-19 09:34:59

+0

@Manwal對不起,沒有例子的答案,但我想提問者想訪問變量與鍵而不是索引,並做了平均的。現在我已經更新了我的答案與演示。 – bharatpatel 2014-09-19 09:50:24

0

我相信穿越你造成的問題。這裏是解決

DEMO

var count=0,total=0; 
for(t in temperatures) 
{ 
    total = total+temperatures[t] 
    count++; 
} 
alert(total/count);//average