I have an array of objects that looks like this:
var data = [{costOfAirtickets: 2500, costOfHotel: 1200},{costOfAirtickets: 1500, costOfHotel: 1000}]
and I want to sum each element in the array to produce an array like this:
var result = [{costOfAirtickets: 4000, costOfHotel: 2200}]
I have used a map and reduce function but I was able to only sum an individual element like so:
data.map(item => ite.costOfAirtickets).reduce((prev, next)=>prev + next); // 22
At the moment this produces a single value which is not what I want as per initial explanation.
Is there a way to do this in Javascript or probably with lodash.
Using for..in
to iterate object and reduce
to iterate array
var data = [{costOfAirtickets: 2500, costOfHotel: 1200},{costOfAirtickets: 1500, costOfHotel: 1000}];
var result = [data.reduce((acc, n) => {
for (var prop in n) {
if (acc.hasOwnProperty(prop)) acc[prop] += n[prop];
else acc[prop] = n[prop];
}
return acc;
}, {})]
console.log(result)