JSFiddle - React, Tailwind, and code Playground
JavaScript
var before = [
{
"title": "House Coffee",
"weight": "1kg",
"grind": "filter",
"quantity": 5
},
{
"title": "House Coffee",
"weight": "1kg",
"grind": "filter",
"quantity": 5
},
{
"title": "House Coffee",
"weight": "250g",
"grind": "Whole Beans",
"quantity": 4
},
{
"title": "House Coffee",
"weight": "250g",
"grind": "Whole Beans",
"quantity": 2
}
];
var after = summarizeArray(before);
console.log(after);
function summarizeArray(arr) {
var result = [];
for(var i = 0; i < arr.length; i++) {
var added = false;
for(var j = 0; j < result.length; j++) {
if((result[j].title == arr[i].title) && (result[j].weight == arr[i].weight) && (result[j].grind == arr[i].grind)) {
added = true;
result[j].quantity += arr[i].quantity;
break;
}
}
if(!added) {
result.push(arr[i]);
}
}
return result;
}