Сортировка массива объектов и суммирование значения у объектов с одинаковым идентификатором
Суть задачи - отсортировать массив объектов по дате, при этом у объектов с одинаковым значением id должно суммироваться значение salary.
Просьба навести на мысль, как организовать алгоритм действий, чтобы достичь результата.
из этого:
arr = [
{
id: 111,
name: 'Ivan',
salary: 5000,
date: '2020-01-01'
},
{
id: 222,
name: 'Oleg',
salary: 3000,
date: '2020-01-01'
},
{
id: 111,
name: 'Ivan',
salary: 5000,
date: '2020-01-01'
},
{
id: 333,
name: 'Anya',
salary: 3000,
date: '2020-01-02'
},
{
id: 444,
name: 'Petr',
salary: 5000,
date: '2020-01-01'
}
]
должно получиться это:
obj = {
'2020-01-01' : {
111: {
"salary": 10000
},
}
}
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
arr.sort((a, b) => a.date>b.date?1:a.date<b.date?-1:0)
.reduce(obj, item) => {
if(!obj[item.date]){
obj[item.date]={};
}
if(!obj[item.date][item.id]){
obj[item.date][item.id] = { salary:item.salary, name:item.name, id:item.id };
}
else {
obj[item.date][item.id].salary += item.salary;
}
return obj;
}, {})