Объединить вложенный массив объектов на основе ключа - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу объединить вложенный массив объектов на основе ключа.

Я получаю этот ответ от publi c API, который я не контролирую:

[
  [
    {
      users: {
        '2jf34144-1634-51fd-24fd-74sdg312l934': [Object],
        'fdsf23gg-1245-2f53-jk34-531gvp3k56nd': [Object]
      }
    },
    {
      users: {
        '2jf34144-1634-51fd-24fd-74sdg312l934': [Object],
        'fdsf23gg-1245-2f53-jk34-531gvp3k56nd': [Object]
      }
    },
    {
      users: {
        '2jf34144-1634-51fd-24fd-74sdg312l934': [Object],
        'fdsf23gg-1245-2f53-jk34-531gvp3k56nd': [Object]
      }
    }
  ],
  [
    {
      users: {
        '2jf34144-1634-51fd-24fd-74sdg312l934': [Object],
        'fdsf23gg-1245-2f53-jk34-531gvp3k56nd': [Object]
      }
    },
    {
      users: {
        '2jf34144-1634-51fd-24fd-74sdg312l934': [Object],
        'fdsf23gg-1245-2f53-jk34-531gvp3k56nd': [Object]
      }
    },
    {
      users: {
        '2jf34144-1634-51fd-24fd-74sdg312l934': [Object],
        'fdsf23gg-1245-2f53-jk34-531gvp3k56nd': [Object]
      }
    }
  ]
]

[Object] :

frame_id: 4 // or number from 1 to 23
region: 'eu' // or 'na' or 'asia'
// rest data

Я хочу получить это в конце:

[
  {
    id: '2jf34144-1634-51fd-24fd-74sdg312l934',
    4: {
      'eu': {
         frame: 4,
         region: 'eu',
         // // rest data
         // score: 14523
         // track_id: 96426
       },
       'na': {
         // data
       },
       'asia': {
         // data
       }
    },
    5: {
       'eu': {
         // data
       },
       'na': {
         // data
       },
       'asia': {
         // data
       }
    }
  },
  {
    id: 'fdsf23gg-1245-2f53-jk34-531gvp3k56nd',
    4: {
      'eu': {
         // data
       },
       'na': {
         // data
       },
       'asia': {
         // data
       }
    },
    5: {
       'eu': {
         // data
       },
       'na': {
         // data
       },
       'asia': {
         // data
       }
    }
  },
]

У меня есть этот код:

res
  .flat()
  .map(obj => Object.entries(obj.users))
  .flat()
  .map(([key, { region, frame_id: frame, ...rest}]) => ({
    id: key,
    frame,
    region,
    ...rest
  }))

Итак, у меня большой массив объектов в конце, и я не знаю, как я могу объединить их на основе ключа / идентификатора, а затем отсортировать с frame и region, как я уже упоминал выше.

...