Группировать объекты согласно одному из Ваших полей

друзья у меня есть этот объект json в моей консультации ajax

{
    "id": "7",
    "descripcion": "Auditorio Cojab",
    "patio": "OTROS"
},
{
    "id": "19",
    "descripcion": "Cancha de f\u00fatbol",
    "patio": "OTROS"
},
{
    "id": "20",
    "descripcion": "Escalonado K\u00ednder",
    "patio": "OTROS"
},
{
    "id": "17",
    "descripcion": "C4 primaria",
    "patio": "PRIMARIA"
},
{
    "id": "11",
    "descripcion": "Patio de primaria",
    "patio": "PRIMARIA"
},
{
    "id": "3",
    "descripcion": "Escenario",
    "patio": "SABA"
},
{
    "id": "2",
    "descripcion": "Terraza",
    "patio": "SABA"
}]

я хотел бы посредством какой-то функции в js, группировать в независимом объекте каждый реестр имея в виду поле 'внутренний двор' каждого из них, а именно хотеть что-то как:

[{
    "SABA": [
        {
            "id": "2",
            "descripcion": "Terraza"
        },
        {
            "id": "3",
            "descripcion": "Escenario"
        },
        {
            "id": "xxxxxxx",
            "descripcion": "xxxxx"
        }
    ],
    "PRIMARIA": [
        {
            "id": "x",
            "descripcion": "xxxxx"
        },
        {
            "id": "xxxxx",
            "descripcion": "xxxxx"
        },
        {
            "id": "xxxxxxx",
            "descripcion": "xxxxx"
        }
    ]        
}]

я не имею он ни разрабатывает, как группировать каждый реестр независимой формы в объекте часть они могли бы помогать мне? я попробовал делать это с foreachs, но он не дал мне ожидаемый resutaldo

0
задан 08.08.2019, 11:56
1 ответ

Альтернативная форма используя уменьшает ():

const arr = [{"id": "7","descripcion": "Auditorio Cojab","patio": "OTROS"},{"id": "19","descripcion":"Cancha de f\u00fatbol","patio": "OTROS"},{"id": "20","descripcion": "Escalonado K\u00ednder","patio":"OTROS"},{"id": "17","descripcion":"C4 primaria","patio": "PRIMARIA"},{"id": "11","descripcion": "Patio de primaria","patio": "PRIMARIA"},{"id": "3","descripcion": "Escenario","patio": "SABA"},{"id": "2","descripcion": "Terraza","patio": "SABA"}];

const res = arr.reduce((p, c) => {
  (c.patio in p) ? p[c.patio].push(c): p[c.patio] = [c]
  return p;
}, {});

console.log(res);
1
ответ дан 01.12.2019, 22:24

Теги

Похожие вопросы