添加所有数值javascript骨干?

时间:2013-12-19 06:36:52

标签: javascript backbone.js

我正在遍历一个集合并调用一个数值属性,而不是一个一个地显示每个值,如何将它们全部加到一个总和中?

playersCollection.each(function(player) {
    var allPoints = player.get('points');
    alert(allPoints);
});

以上返回

 0
 10
 5
 3

相反,我想添加这些数字,所以我得到了

18 

2 个答案:

答案 0 :(得分:2)

您需要将allPoints变量保持在each()回调函数范围之外。

var allPoints = 0;
playersCollection.each(function(player) {
    allPoints = allPoints + player.get('points');
});
alert(allPoints);

这应该为您提供总计

答案 1 :(得分:2)

这是一个经典的reduce

var allPoints = playersCollection.reduce(function(sum, player) {
    return sum + player.get('points');
}, 0);

演示:http://jsfiddle.net/ambiguous/uqm6J/

Backbone集合中混合了various Underscore methods,其中一个是_.reduce。每当您想要将计算结果反馈给自己时,您希望查看reduce,并且您可以将a + b + c + d视为(((0 + a) + b) + c) + d,括号会勾勒出反馈。