get max value

by John Wick

JavaScript

var records=[
  {
    "promotion_name": "AAA",
    "totals": {
      "internalPromotions": 12,
      "externalPromotions": 0,
      "internalPromotionsCount": 12,
      "externalPromotionsCount": 0,
      "totalExternalRedeemed": 2,
      "totalExternalRedeemedCount": 0
    }
  },
  {
    "promotion_name": "BBB",
    "totals": {
      "internalPromotions": 0,
      "externalPromotions": 0,
      "internalPromotionsCount": 1,
      "externalPromotionsCount": 0,
      "totalExternalRedeemed": 0,
      "totalExternalRedeemedCount": 1
    }
  },
  {
    "promotion_name": "CCC",
    "totals": {
      "internalPromotions": 0,
      "externalPromotions": 3,
      "internalPromotionsCount": 2,
      "externalPromotionsCount": 0,
      "totalExternalRedeemed": 0,
      "totalExternalRedeemedCount": 0
    }
  },
  {
    "promotion_name": "DDD",
    "totals": {
      "internalPromotions": 6,
      "externalPromotions": 2,
      "internalPromotionsCount": 6,
      "externalPromotionsCount": 0,
      "totalExternalRedeemed": 0,
      "totalExternalRedeemedCount": 0
    }
  },
  {
    "promotion_name": "EEE",
    "totals": {
      "internalPromotions": 6,
      "externalPromotions": 1,
      "internalPromotionsCount": 5,
      "externalPromotionsCount": 0,
      "totalExternalRedeemed": 1,
      "totalExternalRedeemedCount": 2
    }
  }
];

/* var output={};
var n=records?.length;
for (let i=0; i<n; i++) {
  records[i]?.totals
}
 */

// Aggregating totals
/* var results = records.reduce((acc, record) => {
  Object.keys(record.totals).forEach(key => {
    acc[key] = (acc[key] || 0) + record.totals[key];
  });
  return acc;
}, {}); */

// Aggregating maximum values
var results = records.reduce((acc, record) => {
  Object.keys(record.totals).forEach(key => {
    acc[key] = Math.max(acc[key] || 0, record.totals[key]);
  });
  return acc;
}, {});
console.log('output:', results);