JSFiddle - React, Tailwind, and code Playground
JavaScript
var obj1 = {
"groupsIBelongTo": ["A", "B"]
};
var obj2 = {
"groupsIBelongTo": ["B", "C"]
};
var obj3 = {
"groupsIBelongTo": ["A", "C"]
};
var groups = [{
"groupName": "B",
"objs": [obj1, obj2]
},
{
"groupName": "A",
"objs": [obj1, obj3]
},
{
"groupName": "C",
"objs": [obj2, obj3]
}]
var sortOrder = ['B', 'A', 'C'];
var objArray = [obj1, obj2, obj3];
var map = objArray.reduce(function(hash, item) {
item['groupsIBelongTo'].forEach(function(group) {
hash[group] = hash[group] || [];
hash[group].push(item);
});
return hash;
}, {});
var result = sortOrder.map(function(group) {
return {
'groupName': group,
'objs': map[group]
};
});
console.log(result);