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));