JSFiddle - React, Tailwind, and code Playground

by Andrey Gershun

HTML

<script src="http://alasql.org/console/alasql.min.js"></script>
<span id="res"></span>

JavaScript

var input= [
    {fistname:'Joe', age:'10', sex:'boy', class:'3'},
    {fistname:'Tom', age:'11', sex:'boy', class:'3'},
    {fistname:'Amily', age:'10', sex:'girl', class:'3'},
    {fistname:'Bob', age:'11', sex:'boy',class:'4'},
    {fistname:'Susan', age:'12', sex:'girl', class:'4'}
]

function json2group(input, attr){
    var res1 = alasql('SELECT '+attr[0]+' AS label0,'+attr[1]+' AS label1, ARRAY({label:'+attr[0]+',groups:_}) AS groups1 FROM ? GROUP BY label0,label1',[input]);
    var res2 = alasql('SELECT label0 AS label, ARRAY({label:label1,groups:groups1}) AS groups FROM ? GROUP BY label', [res1]);
    return res2;
};

var res = json2group(input, ["age","class"]);


document.getElementById("res").textContent = JSON.stringify(res);