Search code examples
javascriptnode.jslodash

Sum quantity in a lodash grouped array


I have a groupedBy subscription lodash array, and I want to sum the quantity property and return the value.

Example

{
  sub_1MT4LuP6DArCazGmEdJd: [
    {
      id: 'prod_HleWjM6culM',
      quantity: 1,
    },
    {
      id: 'prod_HleWjM6culM',
      quantity: 3,
    }
  ]
}

The output should be:

{
  sub_1MT4LuP6DArCazGmEdJd: [
    {
      totalQuantity: 4,
    },
  ]
}

Which is the best way to do this sum of values in a lodash grouped array?


Solution

  • You can use _.sumBy.

    let o = {
      sub_1MT4LuP6DArCazGmEdJd: [
        {
          id: 'prod_HleWjM6culM',
          quantity: 1,
        },
        {
          id: 'prod_HleWjM6culM',
          quantity: 3,
        }
      ]
    };
    o.sub_1MT4LuP6DArCazGmEdJd = [{totalQuantity:
      _.sumBy(o.sub_1MT4LuP6DArCazGmEdJd, 'quantity')}];
    console.log(o);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>