web-dev-qa-db-fra.com

Utilisation de Lodash pour additionner les valeurs par clé

Comment puis-je additionner les valeurs dans des objets qui partagent une clé commune? J'ai besoin pour utiliser Lodash pour cela car j'ai besoin de bonnes performances si ces tableaux deviennent énormes.

var prjMgrValues = [
   {"proj_mgr":"Jack ProjManager","submitted_dollars":12000},
   {"proj_mgr":"Jack ProjManager","submitted_dollars":750000},
   {"proj_mgr":"Joe ProjManager","submitted_dollars":45000}
]

Je cherche une sortie de

[
  {"proj_mgr":"Jack ProjManager","submitted_dollars":762000},
  {"proj_mgr":"Joe ProjManager","submitted_dollars":45000}
]
14
S. Hussey

Il s'agit d'un cas de réduction pour chaque élément unique.

J'utilise toujours _.groupBy puis _.map le résultat d'un tableau après avoir appliqué la réduction. Dans ce cas, l'opération de réduction est _.sumBy .

var prjMgrValues = [
   {"proj_mgr":"Jack ProjManager","submitted_dollars":12000},
   {"proj_mgr":"Jack ProjManager","submitted_dollars":750000},
   {"proj_mgr":"Joe ProjManager","submitted_dollars":45000}
];

var output =
  _(prjMgrValues)
    .groupBy('proj_mgr')
    .map((objs, key) => ({
        'proj_mgr': key,
        'submitted_dollars': _.sumBy(objs, 'submitted_dollars') }))
    .value();

console.log(output);
<script src="https://cdn.jsdelivr.net/lodash/4.14.1/lodash.min.js"></script>
41
4castle