@remlin1000
любитель

Как посчитать сумму в массиве объектов и разрезе видов деятельности?

Добрый день!
Есть массив объектов с суммой и видами деятельности:
let Array = [
{
sum : 30,
activitiid : 1,
activitiname : "Грузоперевозки"
},
{
sum : 50,
activitiid : 1,
activitiname : "Грузоперевозки"
},
{
sum : 20,
activitiid : 2,
activitiname : "Ремонт"
},
{
sum : 25,
activitiid : 2,
activitiname : "Ремонт"
},
{
sum : 44,
activitiid : 3,
activitiname : "Продажи"
},
]

Видов деятельности может быть много.
Необходимо посчитать сумму в разрезе видов деятельности, т.е. получить массив:
Грузоперевозки: 80,
Ремонт: 45,
Продажи: 44
  • Вопрос задан
  • 491 просмотр
Решения вопроса 2
rqdkmndh
@rqdkmndh
Web-разработчик
let rez = {};                                                                                
Array.map(obj=>{                                                                             
 rez[obj.activitiname] ? rez[obj.activitiname] += obj.sum : rez[obj.activitiname] = obj.sum  
})                                                                                           
console.log(rez)

выводит объект: { 'Грузоперевозки': 80, 'Ремонт': 45, 'Продажи': 44 }
Ответ написан
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Стандартная задача на array reduce
const res = a.reduce((acc, el)=>{
		if (!acc.hasOwnProperty(el.activitiname)) acc[el.activitiname] = el.sum;
    else acc[el.activitiname] += el.sum;
		return acc;
  }, 
  {}
);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Gary_Ihar
JS *овнокодер
Как вариант. Разложи текущий массив в объект, где ключ это значение activitiname, а значение сумма ну и потом уже в массив. Либо дождаться чувака с непонятным ником и черным кругом на аватарке и получить невероятное решение )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы