在JavaScript中汇总存储在数组中的数字

时间:2012-02-28 04:06:07

标签: javascript json object sum

我想总结存储在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。数字列表保存为对象。我的目标是在任何给定时间总结对象中的所有数字。

这个脚本位于一个传递一堆参数的函数内部,这就是为什么某些变量在这里看起来未定义的原因。

任何帮助将不胜感激!感谢

更新:

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

更新: 如果在提交时分数字段留空,则为空字符串“”而不是分数。当reduce方法通过数组时,这将注册为0。这并不影响总数,但是比方说,例如,我想找到平均分数,它会抛弃它。有什么想法?感谢

1 个答案:

答案 0 :(得分:3)

如果您push()scorelist,我很想说它可能是Array

您可以使用reduce()

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