export function groupsToItems(groups) { return groups.map(group => group.shoppingListItems).flat(); } export function itemsToGroups(shoppingListItems) { const ingredients_by_product_id = {}; const ingredients_by_name = {}; for (const item of shoppingListItems) { if (item.ingredient.product) { let group = ingredients_by_product_id[item.ingredient.product.id]; if (!group) { group = ingredients_by_product_id[item.ingredient.product.id] = { product: item.ingredient.product, shoppingListItems: [] }; } group.shoppingListItems.push(item); } else { let group = ingredients_by_name[item.ingredient.name]; if (!group) { group = ingredients_by_name[item.ingredient.name] = { name: item.ingredient.name, shoppingListItems: [] }; } group.shoppingListItems.push(item); } } return [ ...Object.values(ingredients_by_product_id), ...Object.values(ingredients_by_name) ] }