Как создать новую структуру для группировки по значению - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть следующий JSON:

[
    {
      'con': 'Usa',
      'city': 'ny',
      'town':'as'
    },
    {
      'con': 'Ger',
      'city': 'ber',
      'town':'zd'
    },
    {
      'con': 'Usa',
      'city': 'la',
      'town':'ss'
    }
  ]

и я хочу воссоздать этот json в новую структуру, чтобы не иметь того же значения 'con', новая структура должна выглядеть следующим образом:

[{
        "con": "usa",
        "area": [{
            "city": "ny",
            "town": "as"
        }, {
            "city": "la",
            "town": "ss"
        }]
    },
    {
        "con": "ger",
        "area": [{
            "city": "ber",
            "town": "zd"
        }]
    }
]

У вас есть идея, как это сделать. спасибо

1 Ответ

0 голосов
/ 04 ноября 2018

Альтернативой является использование функции Array.prototype.reduce для группировки по country вместе с функцией Object.values для извлечения сгруппированных объектов.

let arr = [{    'con': 'Usa',    'city': 'ny',    'town': 'as'  },  {    'con': 'Ger',    'city': 'ber',    'town': 'zd'  },  {    'con': 'Usa',    'city': 'la',    'town': 'ss'  }],
    result = Object.values(arr.reduce((a, {con, ...rest}) => {
      (a[con] || (a[con] = {con, area: []})).area.push(rest);
      return a;
    }, Object.create(null)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...