JSFiddle - React, Tailwind, and code Playground
by Joe Saad
JavaScript
function structuringData(rawData, matchingCondition, allFields, parentObject, groupedArray, groupedObject){
console.log(groupedObject)
const result = Object.values(rawData.reduce((a, {allFields}) => {
(a[matchingCondition] || (a[matchingCondition] = {parentObject, groupedArray: []})).persons.push({groupedObject});
return a;
}, {}));
return result;
}
const people = [ {name: "John", age: 23, city: "Seattle", state: "WA"}, {name: "Mark", age: 25, city: "Houston", state: "TX"}, {name: "Luke", age: 26, city: "Seattle", state: "WA"}, {name: "Paul", age: 28, city: "Portland", state: "OR"}, {name: "Matt", age: 21, city: "Oakland", state: "CA"}, {name: "Sam", age: 24, city: "Oakland", state: "CA"}]
const q = structuringData(people, 'state', 'state, city, name, age', 'name,city', 'persons', 'name,age');
console.log(q);