【问题标题】:summing numbers stored in an array in JavaScript在 JavaScript 中对存储在数组中的数字求和
【发布时间】:2012-02-28 04:06:06
【问题描述】:

我想对存储在 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,对其进行字符串化,将每个元素与&lt;br&gt; 连接起来,然后将列表写入得分列。数字列表保存为对象。我的目标是在任何给定时间汇总对象中的所有数字。

这个脚本在一个函数内部,它传入了一堆参数,这就是为什么有些变量在这里看起来没有定义。

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

更新:

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

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

【问题讨论】:

    标签: javascript json object sum


    【解决方案1】:

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

    你可以使用reduce()

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

    【讨论】:

    • 非常优雅的reduce函数。
    • 我不确定我是否真的了解 reduce 函数。你介意解释一下吗?
    • @NicMeiring MDN 有很好的documentation
    • 谢谢。现在得到它。答案仍然是连接而不是求和。查看更新。
    • @NicMeiring 您必须将分数存储为字符串。我会更新我的答案。
    猜你喜欢
    • 2017-05-30
    • 2020-06-22
    • 2015-05-18
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多