我有一个奇怪的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/

10-12 07:31