Since objects are pass by reference in JavaScript, we could iterate over your data, using forEach, building up the results, and like so:
let data = [
{itemId: 1, name: "A", age: 20},
{itemId: 1, name: "B", age: 20},
{itemId: 2, name: "A", age: 11},
{itemId: 2, name: "B", age: 11}
];
let results = [];
(function(map){
data.forEach(function(e, i, data){
if(!map[e.name]){
// we stash all collectors, in our map object
map[e.name] = {name: e.name , age: e.age}
// We add a reference to each object, in our results array
results.push(map[e.name])
} else {
// Since we are updating an "object", all references remain intact.
map[e.name].age += e.age;
}
});
})({})
console.log(results)