JSFiddle - React, Tailwind, and code Playground
by Rahul Patil
JavaScript
Array.prototype.groupBy = function(prop) {
return this.slice()/*mutate*/.reduce(function(groups, item) {
var val = item[prop];
groups[val] = groups[val] || [];
groups[val].push(item);
return groups;
}, {});
}
var originalArray = [
{
name: "some product",
type: "other",
options: [
{
label: "price",
value: 10
}
]
},
{
name: "merge product",
type: "merge",
options: [
{
label: "size",
value: "L"
},
{
label: "color",
value: "white"
},
]
},
{
name: "merge product",
type: "merge",
options: [
{
label: "size",
value: "XL"
},
{
label: "color",
value: "red"
},
]
},
];
console.log("original array");
console.log(originalArray);
console.log("grouped array");
console.log(originalArray.groupBy('name'));
console.log("original array to demonstrate that mutation is avoided");
console.log(originalArray);