我有一个奇怪的plunker here ...
如果删除原始的第三个项目,则total_expenses
正确计算为23196。但是对于第三个对象,total_expenses
为null。谁能看到我想念的东西?total_expenses()
使用_.reduce
对整个集合中的属性值求和。
$scope.loan.total_expenses = _.reduce(original, function(obj){
var grand = 0;
grand += obj.cost;
return grand;
});
最佳答案
从_.reduce
docs:
回调绑定到thisArg,并使用四个参数调用;
(累加器,值,索引|键,集合)_.reduce
回调的第一个参数是累加器(sum)。这是回调函数返回的结果。第一次运行回调时,您将返回grand
(这是一个数字)。这将成为第二次迭代中的obj
参数。我不认为这是您要的。
由于数字没有cost
属性,因此最终将undefined
添加到第一个数字(结果为NaN)。
这是一个有效的示例(但是,@ dfsq的示例更好):
$scope.loan.total_expenses = _.reduce(_.pluck(original, 'cost'), function(sum, cost){
return cost + sum;
});
Updated Plunker
关于javascript - Lodash适用于两个对象,但如果包含三个对象,则返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26694332/