var data = [{
item: "Item 1",
pages: 30,
chapters: 3
},
{
item: "Item 1",
pages: 50,
chapters: 3
},
{
item: "Item 2",
pages: 10,
chapters: 3
}];
const processedData = data.reduce((items, { item, pages, chapters }) => {
const ensureItemData = () =>
items.find(itemData => itemData.item === item)
?? (() => {
const itemData = { item, pages: 0, chapters: 0 };
items.push(itemData);
return itemData;
})();
const itemData = ensureItemData();
itemData.pages += pages;
itemData.chapters += chapters;
return items;
}, []);