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