Want to sum of values with same property name in object using javascript or jquery [closed]

You can use reduce() and filter() to return object as result.

var allreasonsids = [
  {reasonid: 1, reasonname: 'abc'}, 
  {reasonid: 2, reasonname: 'def'}, 
  {reasonid: 3, reasonname: 'ghi'}, 
  {reasonid: 4, reasonname: 'jkl'}
];

var reasonsandcount=[
  {reasonid: 1, quantity: 5},
  {reasonid: 2, quantity: 10},
  {reasonid: 1, quantity: 3},
  {reasonid: 3, quantity: 4},
  {reasonid: 1, quantity: 2},
  {reasonid: 2, quantity: 6}
];

var result = allreasonsids.reduce(function(r, e) {
  var quant = reasonsandcount.filter(function(a) {
    return e.reasonid == a.reasonid
  }).reduce(function(re, el) {
    return re + el.quantity
  }, 0)
  r[e.reasonname] = quant;
  return r
}, {})

console.log(result)

You can also just use reduce() and forEach() loop.

var allreasonsids = [
  {reasonid: 1, reasonname: 'abc'}, 
  {reasonid: 2, reasonname: 'def'}, 
  {reasonid: 3, reasonname: 'ghi'}, 
  {reasonid: 4, reasonname: 'jkl'}
];

var reasonsandcount=[
  {reasonid: 1, quantity: 5},
  {reasonid: 2, quantity: 10},
  {reasonid: 1, quantity: 3},
  {reasonid: 3, quantity: 4},
  {reasonid: 1, quantity: 2},
  {reasonid: 2, quantity: 6}
];

var result = allreasonsids.reduce(function(r, e) {
 var quant = 0;
 reasonsandcount.forEach(el => el.reasonid == e.reasonid ? quant+=el.quantity : 0);
 r[e.reasonname] = quant;
 return r
}, {})

console.log(result)

Leave a Comment