How to group values of a json

0

I have a JSON similar to this:

[
    {
        "id": 459,
        "razao_social": "Testosvaldo de Testousa",
        "cidade": "Testolandia",
    },
    {
        "id": 472,
        "razao_social": "teste trr",
        "cidade": "Belo Horizonte",
    },
    {
        "id": 473,
        "razao_social": "teste trr",
        "cidade": "Belo Horizonte",
    }
]

How do I return a grouped JSON by city?

    
asked by anonymous 04.09.2018 / 16:56

1 answer

4

You can create a new object, navigate through json using a for , and add a new node for each city, and go by grouping the cities within that node, like this:

var jsData=[
    {
        "id": 459,
        "razao_social": "Testosvaldo de Testousa",
        "cidade": "Testolandia",
    },
    {
        "id": 472,
        "razao_social": "teste trr",
        "cidade": "Belo Horizonte",
    },
    {
        "id": 473,
        "razao_social": "teste trr",
        "cidade": "Belo Horizonte",
    }
];


var agrupadoPorCidade = {};
for (var key in jsData) {
    var cidade = jsData[key].cidade;  
    if (!agrupadoPorCidade[cidade]) {
        agrupadoPorCidade[cidade] = [];
    }
    agrupadoPorCidade[cidade].push(jsData[key]);
}

console.log(agrupadoPorCidade);
    
04.09.2018 / 17:16