JSFiddle - React, Tailwind, and code Playground
by JosephGarrone
JavaScript
var data = [
{unit: 35, brand: 'CENTURY'},
{unit: 35, brand: 'BADGER'},
{unit: 25, brand: 'CENTURY'},
{unit: 15, brand: 'CENTURY'},
{unit: 25, brand: 'XEGAR'}
];
function groupBy(field, data) {
var result = [];
var ignore = [];
for (var i = 0; i < data.length; i++) {
var current = data[i];
var isNew = true;
// Find matching elements
for (var j = 0; j < data.length; j++) {
var test = data[j];
if (test != current && result.indexOf(test) == -1 && ignore.indexOf(test) == -1) {
// If their fields match
if (test[field] == current[field]) {
for (var key in test) {
if (test.hasOwnProperty(key) && key != field) {
if (current.hasOwnProperty(key)) {
var currentValues = current[key].split(", ");
currentValues.push(test[key]);
current[key] = currentValues.join(", ");
} else {
current[key] = test[key];
}
}
}
// Add to ignore list
ignore.push(test);
}
}
}
if (ignore.indexOf(current) == -1) {
result.push(current);
}
}
return result;
}
var newData = groupBy('unit', data);
console.log(JSON.stringify(newData));