2014-09-24 71 views
0

在角器,我有:LoDash:在角收益減少0

$scope.corn = { 
     acres: 347.4, 
     fertilizer: { 
      arm: 0, 
      dist: 164.97, 
      other: 0 
     } 
    }; 

    $scope.corn.fertilizer.total = _.reduce($scope.corn.fertilizer); 

    console.log($scope.corn); 

在控制檯中,我看到:

acres: 347.4 
fertilizer: Object 
    arm: 0 
    dist: 164.97 
    other: 0 
    total: 0 

我敢肯定的聲明「_。減少()不工作「是遠離事實,所以,我會寫

有人可以顯示一個新的LoDash用戶如何使用_.reduce將總計變量添加到對象?

在此先感謝!

回答

2

您想在_.reduce呼叫中回撥。它看起來像這樣:

$scope.corn.fertilizer.total = _.reduce($scope.corn.fertilizer, function(total, num) { 
    return total + num; 
}); 

第一個參數是集合,第二個參數是回調。回調函數需要幾個參數,第一個參數是「累加器」(如果沒有定義,這將是集合的第一個元素,這個例子就是這種情況),第二個參數是項目的值收集,第三個是關鍵或索引(這是不需要的)。

+0

只要添加到湯姆的答案,如果你想初始化一個累加器,它將是'reduce'函數的第三個參數。 [lodash文檔](http://lodash.com/docs#reduce) – 2014-09-24 17:48:52

+1

嗯,應該提到這一點。這通常是你想要做的,如果你創建的不是一個總和,就像一個新的對象或數組。好決定。 – 2014-09-24 17:50:17