我正在遍历一个集合并调用一个数值属性,而不是一个一个地显示每个值,如何将它们全部加到一个总和中?
playersCollection.each(function(player) {
var allPoints = player.get('points');
alert(allPoints);
});
以上返回
0
10
5
3
相反,我想添加这些数字,所以我得到了
18
答案 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
,括号会勾勒出反馈。