Имеется массив объектов:
let 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: 'Arman',
salary: 5000,
date: '2020-01-01'
}]
Нужно группировать по определенным датам. Не получается передать остальные значения кроме id и salary
let res = {};
arr.forEach(function(object){
res[object.id] = (res[object.id] || 0) + object.salary;
});
let result = Object.keys(res).map(function(key){
return { id : key, name: key, salary : res[key] }
});
console.dir(result);
В чем проблема? Как можно объединить не используя reduce
При помощи стандартного метода Array.reduce()
let 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: 'Arman',
salary: 5000,
date: '2020-01-01'
}
];
const res = arr.reduce(function(res, cur) {
if (!res[cur.date]) {
res[cur.date] = {};
}
if (!res[cur.date][cur.id]) {
res[cur.date][cur.id] = {
name: cur.name,
salary: cur.salary
};
} else {
res[cur.date][cur.id].salary += cur.salary;
}
return res;
}, {});
console.log(res);
Или без reduce
let 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: 'Arman',
salary: 5000,
date: '2020-01-01'
}
];
const res = {};
arr.forEach(function(cur) {
if (!res[cur.date]) {
res[cur.date] = {};
}
if (!res[cur.date][cur.id]) {
res[cur.date][cur.id] = {
name: cur.name,
salary: cur.salary
};
} else {
res[cur.date][cur.id].salary += cur.salary;
}
});
console.log(res);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как сделать кулл даун? пример: Пользователь пишет daily данные записываются в дб и создается кулдаун например на 12 часовесли он пишет команду...
Есть массив ОбъектовВ объекте данные об имени, id и если есть родительский элемент, то еще и родительский элемент
Дело в том, что ajax не отправляет данные на серверПодскажите пожалуйста из-за чего такое может быть
Назавём две массивы равновеликими , если только один раз в одном из массивов, сменив места одной пары из элементов , мы получим другой массивНапример...