2012-02-28 42 views
1

我想總結存儲在JavaScript對象中的數字列表。創建和更新的對象使用此代碼:在JavaScript中存儲在數組中的數字總和

var myscore = $('input[name="Points1"]').val(); 
scorelist = JSON.parse(localStorage.getItem(playerName + 'scorelist') || '[]'); 
     scorelist.push(myscore); 
     localStorage.setItem(playerName + 'scorelist', JSON.stringify(scorelist)); 
     $('div.scorecolumn', column).html("Score: <br>" + scorelist.join('<br>') + "<br>"); 

我基本上採取無論是在列的時候,解析它,添加myscore,字符串化它,用<br>加入每個元素和寫入的列表中scorecolumn。數字列表被保存爲一個對象。我的目標是在任何時候總結對象中的所有數字。

該腳本位於一個函數中,該函數傳遞一堆參數,這就是爲什麼一些變量在這裏看起來沒有定義的原因。

任何幫助將不勝感激!由於

UPDATE:

var nicTotalScore = nicScoreList.reduce(function(score, total) { 
     return total + score; 
    }, 0); 
    console.log(nicTotalScore); //12120 
    console.log(nicScoreList); //["12", "12"] 

UPDATE: 如果提交時將比分字段爲空,空字符串 「」,而不是得分。當reduce方法遍歷數組時,這將註冊爲0。這並不影響總數,但是比如說,我想要找到平均分數,它就會拋棄它。那裏有任何想法?謝謝

回答

3

如果你push()scorelist,我會試圖說這可能是一個Array。可以使用reduce()

var total = scorelist.reduce(function(total, score) { 
    return total + +score; 
}, 0); 
+0

非常優雅的減少功能。 – Triztian 2012-02-28 04:14:01

+0

我不確定我是否真的瞭解reduce函數。你會介意更多的解釋嗎? – 2012-02-28 04:25:55

+0

@NicMeiring MDN有很好的[documentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/Reduce)。 – alex 2012-02-28 04:26:59