Como agrupar objetos em um array por propriedades iguais

[
   {
  "title":"grupo 1",
  "options":[
     {
        "financed_amount":3155005,
        "first_installment_value":97973,
        "fixed_installments":false,
        "id":123,
        "include_financial_protection_insurance":true,
        "installments":48    
     },
     {
        "financed_amount":500000,
        "first_installment_value":10000,
        "fixed_installments":false,
        "id":124,
        "include_financial_protection_insurance":true,
        "installments":48
     },
     {
        "financed_amount":3155005,
        "first_installment_value":97973,
        "fixed_installments":false,
        "id":125,
        "include_financial_protection_insurance":true,
        "installments":36
     }
  ]
   },
   {
  "title":"grupo 2",
  "options":[
     {           
        "financed_amount":2662522,
        "first_installment_value":82139,
        "fixed_installments":false,
        "id":456,
        "include_financial_protection_insurance":true,
        "installments":48
     },
     {
        "financed_amount":2662522,
        "first_installment_value":82139,
        "fixed_installments":false,
        "id":457,
        "include_financial_protection_insurance":true,
        "installments":36
     },
     {
        "financed_amount":2662522,
        "first_installment_value":82139,
        "fixed_installments":false,
        "id":458,
        "include_financial_protection_insurance":true,
        "installments":36
     }
  ]
   }
]

No json acima tenho um array de 2 objetos.

Cada um desses objetos representa um grupo (grupo 1 e grupo 2).

Estes objetos, por sua vez, contém um array de objetos “options”.

Cada objeto de options tem uma propriedade installments.

Preciso criar subgrupos da seguinte forma: para o grupo 1, dentro do array options, criar subgrupos para os objetos que tem o mesmo valor de ** installments** (o valor de installments é dinâmico)
Por exemplo: se no grupo 1 tem 2 objetos que tem installments com 36, coloco eles no mesmo subgrupo, se tenho um objeto com installments com 48 deixo ele em outro subgrupo. Da mesma forma com o grupo 2.

Mas como deveria ficar os objetos no final? (coloque um JSON de exemplo de como deveria ficar)

O json deveria ficar assim:

[
{
    "title":"grupo 1",
    "options":[
        {
            [
                {
                    "financed_amount":3155005,
                    "first_installment_value":97973,
                    "fixed_installments":false,
                    "id":123,
                    "include_financial_protection_insurance":true,
                    "installments":48    
                },
                {
                    "financed_amount":500000,
                    "first_installment_value":10000,
                    "fixed_installments":false,
                    "id":124,
                    "include_financial_protection_insurance":true,
                    "installments":48
                },
            ]
        },            
        {
            [
                {
                    "financed_amount":3155005,
                    "first_installment_value":97973,
                    "fixed_installments":false,
                    "id":125,
                    "include_financial_protection_insurance":true,
                    "installments":36
                }
            ]
            
        }
    ]
},
{
    "title":"grupo 2",
    "options":[
        {   
            [
                {
                    "financed_amount":2662522,
                    "first_installment_value":82139,
                    "fixed_installments":false,
                    "id":456,
                    "include_financial_protection_insurance":true,
                    "installments":48
                }
            ]        
            
        },
        {
            [
                {
                    "financed_amount":2662522,
                    "first_installment_value":82139,
                    "fixed_installments":false,
                    "id":457,
                    "include_financial_protection_insurance":true,
                    "installments":36
                },
                {
                    "financed_amount":2662522,
                    "first_installment_value":82139,
                    "fixed_installments":false,
                    "id":458,
                    "include_financial_protection_insurance":true,
                    "installments":36
                }
            ]
        }            
    ]
}

]

Só pra constar, essa estrutura está errada (não é um objeto válido):

1-    "options":[
2-            {
3-                [
4-                    {
5-                        "financed_amount":3155005,

Na linha 2 começa um objeto (pois tem o {), só que esse objeto não tem nenhuma chave. Veja que na linha 3 já começa um array (indicado por [), mas em um objeto você precisa ter uma chave antes. Deveria ser algo como:

"options":[
        {
            "algum_nome": [
                {
                    "financed_amount":3155005,

Enfim, sugiro que reveja esta estrutura antes :slight_smile: