<script>
let data = [
{
name: "Item 1",
property2: true,
category: "Group A",
},
{
name: "Item 2",
property2: false,
category: "Group A",
},
{
name: "Item 1",
property2: true,
category: "Group B",
},
{
name: "Item 2",
property2: false,
category: "Group B",
}
]
let groups = data.reduce((curr, val) => {
let group = curr.find(g => g.category === `${val.category}`)
if (group) {
group.values.push(val)
} else {
curr.push({ category: `${val.category}`, values: [ val ] })
}
return curr
}, [])
</script>