I have been trying for some days to dynamically group JSON data, but without success, it is a matter of logic rather than programming itself.
Given an array of objects (Users), group them according to their attributes (name, age, etc.).
The grouping must be dynamic and the result will be displayed according to the chosen attributes.
JSON:
var lUsuarios = [{
"NOME":"ANTONIO CARLOS CURY",
"IDADE": 28,
"SEXO": "MASCULINO",
"ADMINISTRADOR": true
},{
"NOME":"CESAR SIQUEIRA JUNIOR",
"IDADE": 23,
"SEXO": "MASCULINO",
"ADMINISTRADOR": false
},{
"NOME":"ANDREI SALVADOR",
"IDADE": 18,
"SEXO": "MASCULINO",
"ADMINISTRADOR": true
},{
"NOME":"SERGIO MORO",
"IDADE": 35,
"SEXO": "MASCULINO",
"ADMINISTRADOR": false
},{
"NOME":"MARIA DA SILVA",
"IDADE": 17,
"SEXO": "FEMININO",
"ADMINISTRADOR": true,
},{
"NOME":"JOANA FINA",
"IDADE": 19,
"SEXO": "FEMININO",
"ADMINISTRADOR": false
},{
"NOME":"ELIANE DA SILVA",
"IDADE": 21,
"SEXO": "FEMININO",
"ADMINISTRADOR": true,
},{
"NOME":"MARIA BONITA",
"IDADE": 47,
"SEXO": "FEMININO",
"ADMINISTRADOR": false
}]</code>
Grouping function:
function AgruparJSON(colunas){
//Throw new Exception("Não sei o que vai aqui");
}
Method call:
The great difficulty is in the compound groupings, where they will be grouped by two or more attributes of the user list (JSON).
$(function(){
//JSON de dados dos usuários
var lUsuarios = JSON.parse('[{...}]');
var lUsuariosSexoAdministrador = lUsuarios.AgruparJSON("SEXO", "ADMINISTRADOR");
console.log(lUsuariosSexoAdministrador);
//Resultado esperado para console.log(lUsuariosSexoAdministrador);
[{"MASCULINO":
[{ "true" : [{
"NOME":"ANTONIO CARLOS CURY",
"IDADE": 28,
"SEXO": "MASCULINO",
"ADMINISTRADOR": true
},{
"NOME":"ANDREI SALVADOR",
"IDADE": 18,
"SEXO": "MASCULINO",
"ADMINISTRADOR": true}]
},{ "false": [{
"NOME":"CESAR SIQUEIRA JUNIOR",
"IDADE": 23,
"SEXO": "MASCULINO",
"ADMINISTRADOR": false
},{
"NOME":"SERGIO MORO",
"IDADE": 35,
"SEXO": "MASCULINO",
"ADMINISTRADOR": false
}]
}]
},{"FEMININO":
[{ "true" : [{
"NOME":"MARIA DA SILVA",
"IDADE": 17,
"SEXO": "FEMININO",
"ADMINISTRADOR": true
},{
"NOME":"ELIANE DA SILVA",
"IDADE": 21,
"SEXO": "FEMININO",
"ADMINISTRADOR": true
}]
},{ "false": [{
"NOME":"MARIA BONITA",
"IDADE": 47,
"SEXO": "FEMININO",
"ADMINISTRADOR": false
},{
"NOME":"JOANA FINA",
"IDADE": 19,
"SEXO": "FEMININO",
"ADMINISTRADOR": false
}]
}]
}];
});