У меня есть массив объектов в моем JS-приложении, содержащий имя даты, дату и некоторые элементы:
const records = [
{ name: 'Carpat', date: '01/06/18', items: 12 },
{ name: 'Carpat', date: '01/06/18', items: 34 },
{ name: 'Carpat', date: '02/06/18', items: 13 },
{ name: 'Carpat', date: '02/06/18', items: 15 },
{ name: 'Carpat', date: '03/06/18', items: 55 },
{ name: 'Carpat', date: '04/06/18', items: 66 },
]
Я хотел бы уменьшить этот массив, чтобы объекты с одинаковой датой были объединены в один, а свойство новых элементов было результатом суммы этого свойства объединенного объекта. Результат должен быть таким:
const records = [
{ name: 'Carpat', date: '01/06/18', items: 46 },
{ name: 'Carpat', date: '02/06/18', items: 28 },
{ name: 'Carpat', date: '03/06/18', items: 55 },
{ name: 'Carpat', date: '04/06/18', items: 66 },
]
Как лучше всего это сделать?
Повторите свой комментарий к теперь удаленный репост этого: "Только что починил, но все равно ..." Нет, вы этого не сделали. Я неоднократно говорил вам, как это сделать, но вы предпочли не делать этого. Мы (Адриан, Йонас В. и я) сделали это за вас.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто используйте хеш-таблицу дат и отфильтруйте дубликаты:
const hash = {};
const result = records.filter(el => {
if (hash[el.date]) {
hash[el.date].items += el.items;
return false;
} else {
hash[el.date] = el;
return true;
}
});
Живой пример:
const records = [
{ name: 'Carpat', date: '01/06/18', items: 12 },
{ name: 'Carpat', date: '01/06/18', items: 34 },
{ name: 'Carpat', date: '02/06/18', items: 13 },
{ name: 'Carpat', date: '02/06/18', items: 15 },
{ name: 'Carpat', date: '03/06/18', items: 55 },
{ name: 'Carpat', date: '04/06/18', items: 66 },
];
const hash = {};
const result = records.filter(el => {
if (hash[el.date]) {
hash[el.date].items += el.items;
return false;
} else {
hash[el.date] = el;
return true;
}
});
console.info(result);.as-console-wrapper {
max-height: 100% !important;
}Не думаю, что это работает ...
Привет! Пожалуйста, возьмите тур и прочтите центр помощи, в частности Как мне задать хороший вопрос?. Лучше всего здесь провести свое исследование, поиск для связанных тем по SO, и попробовать. Если вы застряли и не можете оторваться после дополнительных исследований и поиска, опубликуйте минимальный воспроизводимый пример своей попытки и конкретно укажите, где вы застряли. Люди будут рады помочь. Удачи!