JSFiddle - React, Tailwind, and code Playground

by jeffersonswartz

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

JavaScript

var data = [{"name":"Grumpier Old Men (1995)","sets":["Comedy"],"value":2},{"name":"Waiting to Exhale (1995)","sets":["Comedy"],"value":3},{"name":"Father of the Bride Part II (1995)","sets":["Comedy"],"value":4},{"name":"Heat (1995)","sets":["Action"],"value":4},{"name":"Sabrina (1995)","sets":["Comedy"],"value":5},{"name":"Toy Story (1995)","sets":["Children","Comedy"],"value":1},{"name":"Jumanji (1995)","sets":["Adventure","Children"],"value":1}];

var groupedData = {};
data.forEach(function(item) {
	var sortedArray = item.sets.sort();
  item.groupKey = sortedArray.join("/~/")
  if(!groupedData[item.groupKey]) {
  	groupedData[item.groupKey] = [];
  }
  groupedData[item.groupKey].push(item);
});
var group = []
for (var key in groupedData){
	var temp = {
  	name: [],
    sets: key.split('/~/'),
    value: groupedData[key].length,
  };
	groupedData[key].forEach(function(item) {
  	temp.name.push(item.name);
  });
  temp.name = temp.name.join(',');
  group.push(temp);
}
console.log(group);
console.log(data);