Ich Gruppierung meine Array mit dieser Funktion:Gruppe Array mit groupBy
Array.prototype.groupBy = function(prop) {
return this.reduce(function(groups, item) {
var val = item[prop];
groups[val] = groups[val] || [];
groups[val].push(item);
return groups;
}, {});
}
ich es in einer anderen Funktion verwenden, in denen ich das Datum erhalten
vm.parkings.forEach(function(value, key) {
value.receiptsByDate = [];
if (value.receipts != undefined) {
value.receipts.forEach(function(rcpts) {
var date = rcpts.date.split('/');
var newDate = date[2] + '/' + date[0];
var year = date[2];
var month = date[0];
var price = rcpts.value;
value.receiptsByDate.push({newDate, price, month, year});
value.newReceipt = value.receiptsByDate.groupBy('month');
})
}
})
Ergebnis:
In meinem newReceipt ich habe die von Monat sortierten Objekte, ok.
würde Ich mag die Preise summieren Monat nach. Beispiel: innerhalb Array drei, auf die Objekte zugreifen und die aktuellen Preise summieren.
Ist dies der beste Weg?
EDIT
Ich habe den Unterstrich und es funktioniert verwendet. Es sieht wie folgt aus:
var result = _.groupBy(receiptsByDate, "month");
var out = _(result).map(function(g, key) {
return {month: key, price: _(g).reduce(function(m, x){return m + x.price}, 0)}
})
Betrachten lodash mit (lodash.com) Algorithmen zu tun –
Ich werde versuchen, dies zu tun –