2017-04-20 35 views
0

ich eine einfache Sammlung haben zusammenzufassen:Verwenden Lodash des reduzieren, um eine Sammlung

[{a: 1}, {a: 2}, {a: 3}]

Wie verwende ich Lodash die reduzieren die Summe aller „a“ Attribute zu bekommen?

Dies scheint wie eine triviale/kanonische Verwendung, aber ich kann nicht die Syntax richtig und überraschend kann keine Dokumente über Lodash's Beispiel finden.

Mit Lodash der docs Beispiel sollte es sein:

const total = _.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => elem.a);

Doch diese gibt den Wert "3" anstelle von „6'

. Hinweis: Ich frage speziell über die Nutzung von reduce. ich bin mir dessen bewusst andere Methoden, wie die in diesem question.

+0

die lodash des Beispiel zu lesen, '_.reduce ([{a: 1}, {a: 2}, {a: 3}], (Summe, Elem) => sum + elem.a, 0) 'sollte funktionieren – ymonad

+0

hier ist der [link to jsfiddle] (https://jsfiddle.net/c1cmst5h/1/) – ymonad

Antwort

2

Sie vergessen sum-elem.a hinzuzufügen. Außerdem müssen Sie eine initi al Reduktion, andernfalls wird sum-{ a: 1 } initialisiert werden:

_.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => sum + elem.a, 0); 

Sie könnten sumBy() für diese auch aussehen wollen. Es ist der gleiche Druckminderer, nur prägnanter:

_.sumBy([{ a: 1}, {a: 2}, {a: 3}], 'a'); 
Verwandte Themen