Вариант на ES6 через функцию
reduce,
деструктуризацию объекта.
// исходный массив
const arr = [
{ name: 'Sasha', apple: 8, banana: 6, cherry: 9 },
{ name: 'Artur', apple: 4, banana: 2, cherry: 1 },
{ name: 'Sasha', apple: 5, banana: 7, cherry: 3 },
{ name: 'Bogdan', apple: 6, banana: 11, cherry: 8 },
{ name: 'Artur', apple: 8, banana: 6, cherry: 9 }
];
// Собираем объект
const result = arr.reduce((acc, current) => {
// если текущее имя есть в свойствах объекта
if (acc.hasOwnProperty(current.name)) {
// извлекаем свойства
const { apple, banana, cherry } = current;
// суммируем количество
acc[current.name].apple += apple;
acc[current.name].banana += banana;
acc[current.name].cherry += cherry;
} else {
// иначе добавляем новое имя в объект и копируем свойства
const { apple, banana, cherry } = current;
acc[current.name] = {
apple,
banana,
cherry
};
}
return acc;
},
{} // начальное значение
);
console.log(result);
Пример на
Codepen